获取JScript对象的expando属性的方法
2012-08-23 15:05
288 查看
参考:
只遍历出JScript对象的expando属性
处了object的hasOwnProperty方法可以获得JScript对象的expando属性外,还可以通过for in 遍历来实现。代码如下:
如果想模仿hashtable,可以获取key以及对应的name,则可以这么写;
如果不需要map的key以及value,那就不要这么麻烦,直接用hasOwnProperty属性就可以了:
只遍历出JScript对象的expando属性
处了object的hasOwnProperty方法可以获得JScript对象的expando属性外,还可以通过for in 遍历来实现。代码如下:
<script type="text/javascript"> Object.prototype.Clone = function() {}; Object.prototype.Call = function() {}; Object.prototype.OtherMethod = function(){}; Object.prototype.getExpandoNames = function() { var values = new Array(); var obj = new this.constructor(); for(var i in this) { if(obj[i]!=this[i]) { values.push(i); } } return values; } var objMap = {}; objMap['abc'] = '1.abc'; objMap['def'] = '2.def'; objMap['ghi'] = '3.ghi'; objMap['jkl'] = '4.jkl'; var exp_names = objMap.getExpandoNames(); document.write("<br>如果只需要Expando属性值,不需要prototype属性值<br>"); for(var i=0;i<exp_names.length;i++) { document.write("name: "+exp_names[i]+", value: "+objMap[exp_names[i]]+"<br>"); } </script>
如果想模仿hashtable,可以获取key以及对应的name,则可以这么写;
<script type="text/javascript"> Object.prototype.Clone = function() {}; Object.prototype.Call = function() {}; Object.prototype.OtherMethod = function(){}; Object.prototype.getExpandoValues = function() { var values = new Array(); var obj = new this.constructor(); for(var i in this) { if(obj[i]!==this[i]) { values.push({"name":i, "value":this[i]}); } } return values; } var objMap = {}; objMap['abc'] = '1.abc'; objMap['def'] = '2.def'; objMap['ghi'] = '3.ghi'; objMap['jkl'] = '4.jkl'; //var map_o = objMap['getExpandoValues'](); var map_o = objMap.getExpandoValues(); document.write("map_o.length: "+map_o.length+"<br>"); for(var i=0;i<map_o.length;i++) { //只需要Expando属性值,不需要prototype属性值 document.write("name: "+map_o[i].name+", value: "+map_o[i].value+"<br>"); } //注意不要下下面的代码,下面的输出将包含Expando属性值以及prototype属性值 for(var item in map_o){ document.write("key: "+map_o[item].name+", map[key]: "+map_o[item].value +"<br>"); } for(var item in objMap){//将包含Expando属性值以及prototype属性值 document.write(item+"<br>"); } </script>
如果不需要map的key以及value,那就不要这么麻烦,直接用hasOwnProperty属性就可以了:
<script type="text/javascript"> Object.prototype.Clone = function() {}; Object.prototype.Call = function() {}; Object.prototype.OtherMethod = function(){}; function GetExpandoValues(map) { var values = []; for ( var key in map ) { if ( map.hasOwnProperty(key) ) { values.push(map[key]); } } return values; } var objMap = {}; objMap['abc'] = '1.abc'; objMap['def'] = '2.def'; objMap['ghi'] = '3.ghi'; objMap['jkl'] = '4.jkl'; var b =GetExpandoValues(objMap); document.write("<br>直接通过hasOwnProperty属性来过滤 <br>b.length:"+b.length); document.write("<br>b"+b); </script>
相关文章推荐
- js 获取函数的所有参数和遍历JavaScript某个对象所有的属性名称和值的方法
- Microsoft JScript 运行时错误 对象不支持此属性或方法
- C#反射实例——获取及设置对象属性,运行对象方法
- python动态获取对象的属性和方法 (转载)
- 获取对象的接口信息(方法/属性/事件)(VB6代码)
- runtime获取对象属性及方法列表
- JavaScript函数之实际参数对象(arguments) / callee属性 / caller属性 / 递归调用 / 获取函数名称的方法
- PHP获取对象属性的三种方法
- JavaScript 获取对象属性和方法
- js 获取对象属性的各种方法
- JavaScript 获取对象属性和方法
- 只遍历出JScript对象的expando属性
- Microsoft JScript 运行时错误: 对象不支持此属性或方法
- python 动态获取对象的属性和方法,并执行它们
- 如何获取对象的属性和方法
- NetBox环境下ajax用get获取数据,中文乱码的问题解决:对象不支持此属性或方法: 'Response.CharSet'
- 获取对象属性的点方法和中括号法的区别
- C#--反射使用Start!-获取对象的字段/属性/方法/成员/构造方法
- js获取对象的所有属性和方法
- JavaScript之面向对象学习二(原型属性对象与in操作符)获取对象中所有属性的方法