手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >js中如何复制一个对象并获取其所有属性和属性对应的值
js中如何复制一个对象并获取其所有属性和属性对应的值
摘要:在js中如何复制一个对象,例如如下一个js对象。如果知道这个对象的所有属性自然就可以重新new一个,然后对每个属性赋值,就可以做到,但如果不...

在js中如何复制一个对象,例如如下一个js对象。

如果知道这个对象的所有属性自然就可以重新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中如何复制一个对象并获取其所有属性和属性对应的值】相关文章:

深入浅析JavaScript面向对象和原型函数

js实现简单div拖拽功能实例

javascript实现图片跟随鼠标移动效果的方法

JS制作手机端自适应缩放显示

jQuery判断一个元素是否可见的方法

使用RequireJS优化JavaScript引用代码的方法

详解Javacript和AngularJS中的Promises

js实现一个链接打开两个链接地址的方法

数字金额千位分隔的Javascript

Backbone.js的一些使用技巧

精品推荐
分类导航