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中获取未知对象属性的代码
Apr 27 Javascript
ExtJS[Desktop]实现图标换行示例代码
Nov 17 Javascript
js判断某个方法是否存在实例代码
Jan 10 Javascript
简化版手机端照片预览组件
Apr 13 Javascript
jQuery+html5+css3实现圆角无刷新表单带输入验证功能代码
Aug 21 Javascript
实例讲解Jquery中隐藏hide、显示show、切换toggle的用法
May 13 Javascript
简单实现js浮动框
Dec 13 Javascript
jquery插件bootstrapValidator表单验证详解
Dec 15 Javascript
浅谈angular4 ng-content 中隐藏的内容
Aug 18 Javascript
JS选取DOM元素常见操作方法实例分析
Dec 10 Javascript
Flutter部件内部状态管理小结之实现Vue的v-model功能
Jun 11 Javascript
uniapp实现横向滚动选择日期
Oct 21 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
全国FM电台频率大全 - 18 湖南省
2020/03/11 无线电
图形数字验证代码
2006/10/09 PHP
php查询mssql出现乱码的解决方法
2014/12/29 PHP
可兼容php5与php7的cURL文件上传功能实例分析
2018/05/11 PHP
Javascript Math ceil()、floor()、round()三个函数的区别
2010/03/09 Javascript
JavaScript DOM 学习总结(五)
2015/11/24 Javascript
jQuery点击输入框显示验证码图片
2016/05/19 Javascript
在Javascript操作JSON对象,增加 删除 修改的简单实现
2016/06/02 Javascript
微信小程序 教程之WXML
2016/10/18 Javascript
js中编码函数:escape,encodeURI与encodeURIComponent详解
2017/03/21 Javascript
Angular2使用Angular CLI快速搭建工程(一)
2017/05/21 Javascript
Angular中ng-options下拉数据默认值的设定方法
2017/06/21 Javascript
js实现简易聊天对话框
2017/08/17 Javascript
JavaScript中关于class的调用方法
2017/11/28 Javascript
解决Vue开发中对话框被遮罩层挡住的问题
2018/11/26 Javascript
js 实现ajax发送步骤过程详解
2019/07/25 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
2019/09/12 Javascript
vue路由守卫,限制前端页面访问权限的例子
2019/11/11 Javascript
JavaScript 中判断变量是否为数字的示例代码
2020/10/22 Javascript
Python将多个excel文件合并为一个文件
2018/01/03 Python
Python中矩阵创建和矩阵运算方法
2018/08/04 Python
深入了解Python iter() 方法的用法
2019/07/11 Python
python对绑定事件的鼠标、按键的判断实例
2019/07/17 Python
python中删除某个元素的方法解析
2019/11/05 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
2020/01/10 Python
python多线程实现代码(模拟银行服务操作流程)
2020/01/13 Python
Django CSRF认证的几种解决方案
2020/03/03 Python
python中二分查找法的实现方法
2020/12/06 Python
ALLSAINTS英国官网:伦敦新锐潮流品牌
2016/09/19 全球购物
新西兰珠宝品牌:Michael Hill
2017/09/16 全球购物
高校生生产实习自我鉴定
2013/09/21 职场文书
业务主管岗位职责范本
2013/12/25 职场文书
学前班评语大全
2014/05/04 职场文书
创建文明城市标语
2014/06/16 职场文书
2015年数学教研工作总结
2015/07/22 职场文书
Nest.js参数校验和自定义返回数据格式详解
2021/03/29 Javascript