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 相关文章推荐
JQuery的ajax获取数据后的处理总结(html,xml,json)
Jul 14 Javascript
图片在浏览器中底部对齐 解决方法之一
Nov 30 Javascript
js原型继承的两种方法对比介绍
Mar 30 Javascript
jQuery控制TR显示隐藏的三种常用方法
Aug 21 Javascript
jQuery实现跨域
Feb 03 Javascript
在JavaScript中处理时间之setMinutes()方法的使用
Jun 11 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
Aug 06 Javascript
jQuery EasyUI右键菜单实现关闭标签/选项卡
Oct 10 Javascript
原生JS实现跑马灯效果
Feb 20 Javascript
JavaScript折半查找(二分查找)算法原理与实现方法示例
Aug 06 Javascript
JS插件amCharts实现绘制柱形图默认显示数值功能示例
Nov 26 Javascript
微信小程序收藏功能的实现代码
Jun 19 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简单的留言板与回复功能具体实现
2014/02/19 PHP
10个实用的PHP正则表达式汇总
2014/10/23 PHP
PHP输出缓冲控制Output Control系列函数详解
2015/07/02 PHP
PHP中对数组的一些常用的增、删、插操作函数总结
2015/11/27 PHP
php中的buffer缓冲区用法分析
2019/05/31 PHP
IE7提供XMLHttpRequest对象为兼容
2007/03/08 Javascript
JavaScript进阶教程(第四课第一部分)
2007/04/05 Javascript
jquery打开直接跳到网页最下面、最低端实现代码
2013/04/22 Javascript
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
JS中的数组的sort方法使用示例
2014/01/22 Javascript
Javascript基础知识(三)BOM,DOM总结
2014/09/29 Javascript
js实现飞入星星特效代码
2014/10/17 Javascript
基于jquery实现的自动补全功能
2015/03/12 Javascript
javascript:void(0)点击登录没反应怎么解决
2015/11/13 Javascript
Require.js的基本用法详解
2017/07/03 Javascript
浅谈vue项目打包优化策略
2018/09/29 Javascript
vuex 实现getter值赋值给vue组件里的data示例
2019/11/05 Javascript
javascript canvas实现简易时钟例子
2020/09/05 Javascript
[15:23]教你分分钟做大人:虚空假面
2014/10/30 DOTA
[02:03]DOTA2亚洲邀请赛 HGT战队出场宣传片
2015/02/07 DOTA
[43:36]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python 获取et和excel的版本号
2009/04/09 Python
python实现的一只从百度开始不断搜索的小爬虫
2013/08/13 Python
tensorflow学习笔记之简单的神经网络训练和测试
2018/04/15 Python
Python中的枚举类型示例介绍
2019/01/09 Python
Python读取xlsx文件的实现方法
2019/07/04 Python
Python学习笔记之Break和Continue用法分析
2019/08/14 Python
Python计算指定日期是今年的第几天(三种方法)
2020/03/26 Python
python读取excel数据绘制简单曲线图的完整步骤记录
2020/10/30 Python
python 自动识别并连接串口的实现
2021/01/19 Python
Falconeri美国官网:由羊绒和羊毛制成的针织服装
2018/04/08 全球购物
Dr. Martens马汀博士澳大利亚官网:马丁靴鼻祖
2019/07/02 全球购物
Bluebella德国官网:英国性感内衣和睡衣品牌
2019/11/08 全球购物
导游词之无锡丝业博物馆
2019/11/12 职场文书
MongoDB数据库之添删改查
2022/04/26 MongoDB
HTML 里 img 元素的 src 和 srcset 属性的区别详解
2023/05/21 HTML / CSS