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中eval函数的使用方法与示例
Apr 09 Javascript
浅析ajax请求json数据并用js解析(示例分析)
Jul 13 Javascript
JavaScript初学者建议:不要去管浏览器兼容
Feb 04 Javascript
限制上传文件大小和格式的jQuery插件实例
Jan 24 Javascript
JavaScript使用Max函数返回两个数字中较大数的方法
Apr 06 Javascript
javascript实现的字符串与十六进制表示字符串相互转换方法
Jul 17 Javascript
使用jQuery.form.js/springmvc框架实现文件上传功能
May 12 Javascript
AngularJS定时器的使用与移除操作方法【interval与timeout】
Dec 14 Javascript
Vue2 使用 Echarts 创建图表实例代码
May 18 Javascript
React中的render何时执行过程
Apr 13 Javascript
微信运维交互机器人的示例代码
Nov 12 Javascript
解决vue admin element noCache设置无效的问题
Nov 12 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
《魔兽争霸3:重制版》翻车了?你想要的我们都没有
2019/11/07 魔兽争霸
PHPAnalysis中文分词类详解
2014/06/13 PHP
thinkphp模板用法和内容输出实例
2014/11/28 PHP
PHP读取文件内容的五种方式
2015/12/28 PHP
PHP简单实现遍历目录下特定文件的方法小结
2017/05/22 PHP
PHP实现的数据对象映射模式详解
2019/03/20 PHP
学习YUI.Ext 第四天--对话框Dialog的使用
2007/03/10 Javascript
js wmp操作代码小结(音乐连播功能)
2008/11/08 Javascript
jquery中:input和input的区别分析
2011/07/13 Javascript
js验证整数加保留小数点的简单实例
2013/12/02 Javascript
键盘上一张下一张兼容IE/google/firefox等浏览器
2014/01/28 Javascript
jQuery实现页面评论栏中访客信息自动填写功能的方法
2016/05/23 Javascript
js实现文字超出部分用省略号代替实例代码
2016/09/01 Javascript
浅谈JS之tagNaem和nodeName
2016/09/13 Javascript
jquery封装插件时匿名函数形参和实参的写法解释
2017/02/14 Javascript
Node.js 使用命令行工具检查更新
2017/06/08 Javascript
一个简单的node.js界面实现方法
2018/06/01 Javascript
vue+web端仿微信网页版聊天室功能
2019/04/30 Javascript
[47:43]Alliance vs KG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
在Python下尝试多线程编程
2015/04/28 Python
Python语言实现将图片转化为html页面
2017/12/06 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
2018/12/19 Python
python写入数据到csv或xlsx文件的3种方法
2019/08/23 Python
TensorFlow MNIST手写数据集的实现方法
2020/02/05 Python
python闭包与引用以及需要注意的陷阱
2020/09/18 Python
python实现在列表中查找某个元素的下标示例
2020/11/16 Python
css3绘制天猫logo实现代码
2012/11/06 HTML / CSS
Martinelli官方商店:西班牙皮鞋和高跟鞋品牌
2019/07/30 全球购物
技术学校毕业生求职信分享
2013/12/02 职场文书
青年文明号服务承诺
2014/03/31 职场文书
投标承诺函范文
2015/01/21 职场文书
导游词之太原天龙山
2020/01/02 职场文书
SQL实现LeetCode(177.第N高薪水)
2021/08/04 MySQL
nginx常用配置conf的示例代码详解
2022/03/21 Servers
PostgreSQL数据库创建并使用视图以及子查询
2022/04/11 PostgreSQL
SQL Server数据库的三种创建方法汇总
2023/05/08 MySQL