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 相关文章推荐
JavaScript触发器详解
Mar 10 Javascript
在子窗口中关闭父窗口的一句代码
Oct 21 Javascript
js中通过父级进行查找定位元素
Jun 15 Javascript
JS实现弹性菜单效果代码
Sep 07 Javascript
js手机号4位显示空格,银行卡每4位显示空格效果
Mar 23 Javascript
Angular2+国际化方案(ngx-translate)的示例代码
Aug 23 Javascript
详解Vue-cli webpack移动端自动化构建rem问题
Apr 07 Javascript
JS算法题之查找数字在数组中的索引位置
May 15 Javascript
Vue Router history模式的配置方法及其原理
May 30 Javascript
通过说明与示例了解js五种设计模式
Jun 17 Javascript
微信小程序开发(一):服务器获取数据列表渲染操作示例
Jun 01 Javascript
JavaScript 事件代理需要注意的地方
Sep 08 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自动生成月历代码
2006/10/09 PHP
PHP4与PHP5的时间格式问题
2008/02/17 PHP
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
2011/07/23 PHP
使用PHP如何实现高效安全的ftp服务器(一)
2015/12/20 PHP
PHP文件上传小程序 适合初学者学习!
2019/05/23 PHP
理清apply(),call()的区别和关系
2011/08/14 Javascript
Jquery中ajax方法data参数的用法小结
2014/02/12 Javascript
js阻止浏览器默认行为的简单实例
2016/05/15 Javascript
浅谈window.onbeforeunload() 事件调用ajax
2016/06/29 Javascript
ion content 滚动到底部会遮住一部分视图的快速解决方法
2016/09/06 Javascript
BootStrap中Table分页插件使用详解
2016/10/09 Javascript
浅谈原生JS实现jQuery的animate()动画示例
2017/03/08 Javascript
jQuery表单设置值的方法
2017/06/30 jQuery
node.js操作MongoDB的实例详解
2017/10/11 Javascript
arcgis for js栅格图层叠加(Raster Layer)问题
2017/11/22 Javascript
Python跨文件全局变量的实现方法示例
2017/12/10 Python
Python实现压缩文件夹与解压缩zip文件的方法
2018/09/01 Python
Python使用matplotlib实现交换式图形显示功能示例
2019/09/06 Python
python 字符串常用方法汇总详解
2019/09/16 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
2020/10/22 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
2021/01/06 Python
python实现马丁策略回测3000只股票的实例代码
2021/01/22 Python
CSS3制作酷炫的三维相册效果
2016/07/01 HTML / CSS
专门出售各种儿童读物的网站:Put Me In The Story
2016/08/07 全球购物
教师自我鉴定范文
2013/11/10 职场文书
房地产销售大学生自我评价分享
2013/11/11 职场文书
优秀大学生推荐信范文
2013/11/28 职场文书
求职简历的自我评价
2014/01/31 职场文书
2014年十一国庆节爱国演讲稿
2014/09/23 职场文书
干部年终考核评语
2015/01/04 职场文书
关于学习的决心书
2015/02/05 职场文书
2015年优质护理服务工作总结
2015/04/08 职场文书
2015年会计年终工作总结
2015/05/26 职场文书
2016幼儿园毕业感言
2015/12/08 职场文书
JavaScript数组reduce()方法的语法与实例解析
2021/07/07 Javascript
《战锤40K:暗潮》跳票至9月 公布新宣传片
2022/04/03 其他游戏