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


Posted in Javascript onOctober 24, 2013

在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 属性不考虑原型链中的对象。

Javascript 相关文章推荐
让网页根据不同IE版本显示不同的内容
Feb 08 Javascript
JavaScript实现按Ctrl键打开新页面
Sep 04 Javascript
jQuery统计上传文件大小的方法
Jan 24 Javascript
JavaScript多并发问题如何处理
Oct 28 Javascript
莱鸟介绍javascript onclick事件
Jan 06 Javascript
JS中setTimeout和setInterval的最大延时值详解
Feb 13 Javascript
利用Javascript裁剪图片并存储的简单实现
Mar 13 Javascript
ES6新特性六:promise对象实例详解
Apr 21 Javascript
jquery 获取索引值在一定范围的列表方法
Jan 25 jQuery
微信小程序wx.uploadfile 本地文件转base64的实现代码
Jun 28 Javascript
vue axios重复点击取消上一次请求封装的方法
Jun 19 Javascript
vue实现标签云效果的示例
Nov 09 Javascript
js switch case default 的用法示例介绍
Oct 23 #Javascript
js setTimeout opener的用法示例详解
Oct 23 #Javascript
利用jQuery实现可输入搜索文字的下拉框
Oct 23 #Javascript
jquery模拟SELECT下拉框取值效果
Oct 23 #Javascript
js、css、img等浏览器缓存问题的2种解决方案
Oct 23 #Javascript
js从10种颜色中随机取色实现每次取出不同的颜色
Oct 23 #Javascript
3分钟写出来的Jquery版checkbox全选反选功能
Oct 23 #Javascript
You might like
利用PHP和AJAX创建RSS聚合器的代码
2007/03/13 PHP
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
2013/06/29 PHP
Zend Framework动作助手FlashMessenger用法详解
2016/03/05 PHP
Javascript 各浏览器的 Javascript 效率对比
2008/01/23 Javascript
Javascript之旅 对象的原型链之由来
2010/08/25 Javascript
js仿百度有啊通栏展示效果实现代码
2013/05/28 Javascript
php 中序列化和json使用介绍
2013/07/08 Javascript
jquery(hide方法)隐藏指定元素实例
2013/11/11 Javascript
JavaScript严格模式禁用With语句的原因
2014/10/20 Javascript
JS实现霓虹灯文字效果的方法
2015/08/06 Javascript
js简单实现表单中点击按钮动态增加输入框数量的方法
2015/08/18 Javascript
jQuery移动web开发中的页面初始化与加载事件
2015/12/03 Javascript
BootStrap Progressbar 实现大文件上传的进度条的实例代码
2016/06/27 Javascript
js 实现一些跨浏览器的事件方法详解及实例
2016/10/27 Javascript
JavaScript原生节点操作小结
2017/01/17 Javascript
基于JavaScript实现的快速排序算法分析
2017/04/14 Javascript
详解Angular的8个主要构造块
2017/06/20 Javascript
JavaScript实现简单图片轮播效果
2017/08/21 Javascript
JS+php后台实现文件上传功能详解
2019/03/02 Javascript
BootstrapValidator验证用户名已存在(ajax)
2019/11/08 Javascript
[04:29]2016国际邀请赛中国区预选赛Ehome战队教练采访
2016/06/27 DOTA
[04:15]DOTA2-DPC中国联赛1月19日Recap集锦
2021/03/11 DOTA
python中lambda与def用法对比实例分析
2015/04/30 Python
python生成IP段的方法
2015/07/07 Python
详细介绍Python的鸭子类型
2016/09/12 Python
Python脚本获取操作系统版本信息
2016/12/17 Python
详解python读取和输出到txt
2019/03/29 Python
python将类似json的数据存储到MySQL中的实例
2019/07/12 Python
jupyter notebook更换皮肤主题的实现
2021/01/07 Python
波兰在线杂货店:Polski Koszyk
2019/11/02 全球购物
幸福家庭事迹材料
2014/02/03 职场文书
股东出资证明书(正规版)
2014/09/24 职场文书
街道务虚会发言材料
2014/10/20 职场文书
试用期自我评价怎么写
2015/03/10 职场文书
Golang: 内建容器的用法
2021/05/05 Golang
Redis数据同步之redis shake的实现方法
2022/04/21 Redis