js中如何复制一个对象,如何获取所有属性和属性对应的值
2013-10-23 18:57
731 查看
在js中如何复制一个对象,例如如下一个js对象。
如果知道这个对象的所有属性自然就可以重新new一个,然后对每个属性赋值,就可以做到,但如果不知道呢?如何创建一个内容相同 的对象呢?
[javascript] view
plaincopy
var obj={ colkey: "col", colsinfo: "NameList" }
最简单就是使用for in,
例如obj2就拥有了和obj完全相同的属性
[javascript] view
plaincopy
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 属性不考虑原型链中的对象。
如果知道这个对象的所有属性自然就可以重新new一个,然后对每个属性赋值,就可以做到,但如果不知道呢?如何创建一个内容相同 的对象呢?
[javascript] view
plaincopy
var obj={ colkey: "col", colsinfo: "NameList" }
最简单就是使用for in,
例如obj2就拥有了和obj完全相同的属性
[javascript] view
plaincopy
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 利用 for in 循环获取 一个对象的所有属性以及值
- js利用for in循环获取 一个对象的所有属性以及值的实例
- js 获取一个对象中的所有属性
- js 获取一个对象中的所有属性
- JS中,如何查询一个对象的所有属性
- js中获取一个对象中包含的所有属性及属性值
- js 里, 如何过得一个'对象'的所有属性
- 【转】js获取对象的所有属性和方法
- js中获取一个对象里面的方法和属性的javascript
- js如何判断一个对象{}是否为空对象,没有任何属性
- js获取对象,数组所有属性值(key)和对应值(value)的方法
- iOS 获取对象的全部属性、把model的所有属性和对应的值转化为字典
- 创建对应的运行时类的对象、获取运行时类的所有属性、方法
- 关于如何利用原生js动态给一个空对象添加属性以及属性值