js中如何复制一个对象并获取其所有属性和属性对应的值

 更新时间:2013年10月24日 09:26:04   作者:  
如果知道这个对象的所有属性自然就可以重新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实现json的序列化和反序列化功能示例

    JS实现json的序列化和反序列化功能示例

    这篇文章主要介绍了JS实现json的序列化和反序列化功能,结合具体实例形式分析了javascript针对json的序列化与反序列化相关实现技巧,需要的朋友可以参考下
    2017-06-06
  • 判断滚动条滑到底部触发事件(实例讲解)

    判断滚动条滑到底部触发事件(实例讲解)

    下面小编就为大家带来一篇判断滚动条滑到底部触发事件的实例讲解。具有很好的参考价值。一起跟随小编过来看看吧,希望对大家有所帮助
    2017-11-11
  • js给图片打马赛克的方法示例

    js给图片打马赛克的方法示例

    有时候你发出去的图片局部不想别别人看见,那么最简单的办法就是在你想要处理的地方打上马赛克,这篇文章主要介绍了js给图片打马赛克的方法示例,感兴趣的可以了解一下
    2021-05-05
  • js给selected添加options的方法

    js给selected添加options的方法

    这篇文章主要介绍了js给selected添加options的方法,涉及javascript动态添加页面下拉列表selected的技巧,需要的朋友可以参考下
    2015-05-05
  • javascript图像处理—仿射变换深度理解

    javascript图像处理—仿射变换深度理解

    上一篇文章,我们讲解了图像金字塔,这篇文章我们来了解仿射变换,仿射?任何仿射变换都可以转换成,乘以一个矩阵(线性变化),再加上一个向量(平移变化),接下来详细介绍,感兴趣的朋友可以了解下
    2013-01-01
  • JavaScript实现一个简易的计算器实例代码

    JavaScript实现一个简易的计算器实例代码

    这篇文章主要介绍了JavaScript实现一个简易的计算器实例代码,具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧
    2018-05-05
  • ES6知识点整理之函数数组参数的默认值及其解构应用示例

    ES6知识点整理之函数数组参数的默认值及其解构应用示例

    这篇文章主要介绍了ES6知识点整理之函数数组参数的默认值及其解构应用,结合实例形式分析了ES6函数数组参数解构赋值和默认值的设置相关操作技巧,需要的朋友可以参考下
    2019-04-04
  • webpack源码之loader机制详解

    webpack源码之loader机制详解

    本篇文章主要介绍了webpack源码之loader机制详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • 详解在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入)

    详解在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入)

    这篇文章主要介绍了在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入),本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • vs2003 js文件编码问题的解决方法

    vs2003 js文件编码问题的解决方法

    一个.aspx文件引用一个js文件:<script type="text/javascript" src="ASSscript.js"></script>
    2010-03-03

最新评论