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 miscellanea -display data real time, using window.status
Jan 09 Javascript
基于jQuery的可以控制左右滚动及自动滚动效果的代码
Jul 25 Javascript
快速排序 php与javascript的不同之处
Feb 22 Javascript
查找页面中所有类为test的结点的方法
Mar 28 Javascript
extjs_02_grid显示本地数据、显示跨域数据
Jun 23 Javascript
JS实现星星评分功能实例代码(两种方法)
Jun 09 Javascript
js数组常用操作方法小结(增加,删除,合并,分割等)
Aug 02 Javascript
Bootstrap Search Suggest使用例子
Dec 21 Javascript
Node.JS文件系统解析实例详解
May 15 Javascript
JS简单实现滑动加载数据的方法示例
Oct 18 Javascript
Vue cli 引入第三方JS和CSS的常用方法分享
Jan 20 Javascript
javascript canvas检测小球碰撞
Apr 17 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 防恶意刷新实现代码
2010/05/16 PHP
php日期转时间戳,指定日期转换成时间戳
2012/07/17 PHP
探讨捕获php错误信息方法的详解
2013/06/09 PHP
php将图片文件转换成二进制输出的方法
2015/06/10 PHP
php自定义时间转换函数示例
2016/12/07 PHP
关于PHP内置的字符串处理函数详解
2017/02/04 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
2020/02/21 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
简单的无缝滚动程序-仅几行代码
2007/05/08 Javascript
JavaScript1.6数组新特性介绍以及JQuery的几个工具方法
2013/12/06 Javascript
JavaScript类属性的访问方式详解
2014/02/11 Javascript
js 日期比较相关天数代码
2014/04/02 Javascript
node.js中的fs.fchownSync方法使用说明
2014/12/16 Javascript
JavaScript 学习笔记之数据类型
2015/01/14 Javascript
体验jQuery和AngularJS的不同点及AngularJS的迷人之处
2016/02/02 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
2016/09/28 Javascript
jQuery正则验证注册页面经典实例
2017/06/10 jQuery
javaScript中封装的各种写法示例(推荐)
2017/07/03 Javascript
在Vue.js中使用Mixins的方法
2017/09/12 Javascript
vue小图标favicon不显示的解决方案
2017/09/19 Javascript
VUE 3D轮播图封装实现方法
2018/07/03 Javascript
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
2018/11/01 NodeJs
JS使用Dijkstra算法求解最短路径
2019/01/17 Javascript
JS 自执行函数原理及用法
2019/08/05 Javascript
python计算牛顿迭代多项式实例分析
2015/05/07 Python
python把ipynb文件转换成pdf文件过程详解
2019/07/09 Python
Python常用数据类型之间的转换总结
2019/09/06 Python
Python CSS选择器爬取京东网商品信息过程解析
2020/06/01 Python
详解修改Anaconda中的Jupyter Notebook默认工作路径的三种方式
2021/01/24 Python
处理textarea中的换行和空格
2019/12/12 HTML / CSS
英国领先的家庭时尚品牌:Peacocks
2018/01/11 全球购物
Ray-Ban雷朋奥地利官网:全球领先的太阳眼镜品牌
2020/10/12 全球购物
公司投资建议书
2014/05/16 职场文书
酒后驾车标语
2014/06/30 职场文书
小学校长个人总结
2015/03/03 职场文书
SQL Server使用CROSS APPLY与OUTER APPLY实现连接查询
2022/05/25 SQL Server