js中如何复制一个对象,如何获取所有属性和属性对应的值
2013-07-17 14:54
841 查看
在js中如何复制一个对象,例如如下一个js对象。
如果知道这个对象的所有属性自然就可以重新new一个,然后对每个属性赋值,就可以做到,但如果不知道呢?如何创建一个内容相同 的对象呢?
最简单就是使用for in,
例如obj2就拥有了和obj完全相同的属性
一个对象是否可以进行for in穷举,我们可以通过propertyIsEnumerable属性来判断,说明如下:
propertyIsEnumerable 属性
返回 Boolean 值,指出所指定的属性是否为一个对象的一部分以及该属性是否是可列举的。
object.propertyIsEnumerable(proName)
参数
object
必选项。一个对象。
proName
必选项。一个属性名称的字符串值。
说明
如果 proName 存在于 object 中且可以使用一个 For…In 循环穷举出来,那么 propertyIsEnumerable 属性返回 true。如果 object 不具有所指定的属性或者所指定的属性不是可列举的,那么 propertyIsEnumerable 属性返回 false。典型地,预定义的属性不是可列举的,而用户定义的属性总是可列举的。
propertyIsEnumerable 属性不考虑原型链中的对象。
如果知道这个对象的所有属性自然就可以重新new一个,然后对每个属性赋值,就可以做到,但如果不知道呢?如何创建一个内容相同 的对象呢?
var obj={ colkey: "col", colsinfo: "NameList" }
最简单就是使用for in,
例如obj2就拥有了和obj完全相同的属性
var obj2=new Object(); for(var p in obj) { var name=p;//属性名称 var value=obj[p];//属性对应的值 obj2[name]=obj[p]; }其实这种方式有一定的限制,关键是js中for in有一定限制,并不会遍历对象的所有属性,只会遍历可枚举的属性,由js核心定义的方法都是不可枚举的,例如tostring(),但代码中定义的属性都是可枚举的(可以通过特殊定义为不可枚举的)。因此这个方法就够用了。
一个对象是否可以进行for in穷举,我们可以通过propertyIsEnumerable属性来判断,说明如下:
propertyIsEnumerable 属性
返回 Boolean 值,指出所指定的属性是否为一个对象的一部分以及该属性是否是可列举的。
object.propertyIsEnumerable(proName)
参数
object
必选项。一个对象。
proName
必选项。一个属性名称的字符串值。
说明
如果 proName 存在于 object 中且可以使用一个 For…In 循环穷举出来,那么 propertyIsEnumerable 属性返回 true。如果 object 不具有所指定的属性或者所指定的属性不是可列举的,那么 propertyIsEnumerable 属性返回 false。典型地,预定义的属性不是可列举的,而用户定义的属性总是可列举的。
propertyIsEnumerable 属性不考虑原型链中的对象。
相关文章推荐
- [置顶] js中如何复制一个对象,如何获取所有属性和属性对应的值
- js中如何复制一个对象并获取其所有属性和属性对应的值
- js中如何复制一个对象并获取其所有属性和属性对应的值
- js中如何复制一个对象,如何获取所有属性和属性对应的值
- js获取一个对象其所有属性和属性对应的值
- JS中,如何查询一个对象的所有属性
- js中获取一个对象中包含的所有属性及属性值
- js 里, 如何过得一个'对象'的所有属性
- js 一个对象的属性名是一个变量如何设置和获取值
- js利用for in循环获取 一个对象的所有属性以及值的实例
- JS 利用 for in 循环获取 一个对象的所有属性以及值
- js 获取一个对象中的所有属性
- js 获取一个对象中的所有属性
- js获取对象的所有属性和方法
- JS获得一个对象的所有属性和方法
- js获取对象,数组所有属性值(key)和对应值(value)的方法
- js 获取函数的所有参数和遍历JavaScript某个对象所有的属性名称和值的方法
- 打印js中一个对象的所有属性的值
- 在C#如何遍历一个对象的所有属性
- 如何获取Agile PLM Business Object 对应Agile对象的属性?