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 相关文章推荐
超级退弹代码
Jul 07 Javascript
extjs 列表框(multiselect)的动态添加列表项的方法
Jul 31 Javascript
dtree 网页树状菜单及传递对象集合到js内,动态生成节点
Apr 14 Javascript
在javascript中关于节点内容加强
Apr 11 Javascript
javascript中为某个元素指定事件的三种方式
Aug 07 Javascript
探析浏览器执行JavaScript脚本加载与代码执行顺序
Jan 12 Javascript
Bootstrap Table使用心得总结
Nov 29 Javascript
jquery easyui DataGrid简单示例
Jan 23 Javascript
layui弹出层效果实现代码
May 19 Javascript
JavaScript遍历数组的三种方法map、forEach与filter实例详解
Feb 27 Javascript
vue路由教程之静态路由
Sep 03 Javascript
微信小程序实现打开并下载服务器上面的pdf文件到手机
Sep 20 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
解决MySQL中文输出变成问号的问题
2008/06/05 PHP
关于php 接口问题(php接口主要也就是运用curl,curl函数)
2013/07/01 PHP
php实现的漂亮分页方法
2014/04/17 PHP
Mac系统完美安装PHP7详细教程
2017/06/06 PHP
基于PHP实现用户登录注册功能的详细教程
2020/08/04 PHP
jQuery EasyUI API 中文文档 - Tree树使用介绍
2011/11/19 Javascript
JS禁用浏览器退格键实现思路及代码
2013/10/29 Javascript
Javascript排序算法之计数排序的实例
2014/04/05 Javascript
NodeJS学习笔记之MongoDB模块
2015/01/13 NodeJs
JavaScript forEach()遍历函数使用及介绍
2015/07/08 Javascript
微信小程序 textarea 组件详解及简单实例
2017/01/10 Javascript
Vue页面骨架屏的实现方法
2018/05/22 Javascript
JS实现移动端在线签协议功能
2019/08/22 Javascript
JavaScript 浏览器对象模型BOM原理与常见用法实例分析
2019/12/16 Javascript
解决vant-UI库修改样式无效的问题
2020/11/03 Javascript
vue + el-form 实现的多层循环表单验证
2020/11/25 Vue.js
[05:08]DOTA2-DPC中国联赛3月6日Recap集锦
2021/03/11 DOTA
通过代码实例展示Python中列表生成式的用法
2015/03/31 Python
详解Python使用simplejson模块解析JSON的方法
2016/03/24 Python
利用Python如何生成hash值示例详解
2017/12/20 Python
jupyter notebook引用from pyecharts.charts import Bar运行报错
2020/04/23 Python
opencv 查找连通区域 最大面积实例
2020/06/04 Python
贝佳斯官方网站:Borghese
2020/05/08 全球购物
毕业自荐信
2013/12/16 职场文书
饭店工作计划书
2014/01/10 职场文书
音乐教学案例
2014/01/30 职场文书
淘宝中秋节活动方案
2014/01/31 职场文书
企业业务员岗位职责
2014/03/14 职场文书
小学数学教学经验交流材料
2014/05/22 职场文书
岗位工作说明书
2014/07/29 职场文书
工作失职检讨书500字
2014/10/17 职场文书
留学推荐信中文范文
2015/03/26 职场文书
《爬天都峰》教学反思
2016/02/23 职场文书
咖啡厅里的创业计划书
2019/08/21 职场文书
Python爬虫基础之简单说一下scrapy的框架结构
2021/06/26 Python
Java实现注册登录跳转
2022/06/16 Java/Android