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 相关文章推荐
AJAX的跨域与JSONP(为文章自动添加短址的功能)
Jan 17 Javascript
一个javascript图片阅览组件
Nov 09 Javascript
javascript学习笔记(十九) 节点的操作实现代码
Jun 20 Javascript
checkbox设置复选框的只读效果不让用户勾选
Aug 12 Javascript
javascript里绝对用的上的字符分割函数总结
Jul 31 Javascript
javascript实现字符串反转的方法
Feb 05 Javascript
利用jquery实现瀑布流3种案例
Sep 18 Javascript
详解使用nvm管理多版本node的方法
Aug 30 Javascript
JS实现的ajax和同源策略(实例讲解)
Dec 01 Javascript
微信小程序日历弹窗选择器代码实例
May 09 Javascript
使用vue for时为什么要key【推荐】
Jul 11 Javascript
vue3.0 自适应不同分辨率电脑的操作
Feb 06 Vue.js
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
探讨方法的重写(覆载)详解
2013/06/08 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
2016/09/19 PHP
详解thinkphp中的volist标签
2018/01/15 PHP
Laravel 创建指定表 migrate的例子
2019/10/09 PHP
PHP实现一个按钮点击上传多个图片操作示例
2020/01/23 PHP
Firefox div高度自适应
2009/04/28 Javascript
jQuery获取地址栏参数插件(模仿C#)
2010/10/26 Javascript
一些常用的JavaScript函数(json)附详细说明
2011/05/25 Javascript
js向上无缝滚动,网站公告效果 具体代码
2013/11/18 Javascript
XMLHttpRequest处理xml格式的返回数据(示例代码)
2013/11/21 Javascript
jQuery基于扩展实现的倒计时效果
2016/05/14 Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
2016/10/24 Javascript
AngulerJS学习之按需动态加载文件
2017/02/13 Javascript
JS实现针对给定时间的倒计时功能示例
2017/04/11 Javascript
javascript 封装Date日期类实例详解
2017/05/28 Javascript
spirngmvc js传递复杂json参数到controller的实例
2018/03/29 Javascript
vue router+vuex实现首页登录验证判断逻辑
2018/05/17 Javascript
微信公众平台 发送模板消息(Java接口开发)
2019/04/17 Javascript
js回溯法计算最佳旅行线路代码实例
2019/09/11 Javascript
使用Karma做vue组件单元测试的实现
2020/01/16 Javascript
vue props 单项数据流实例分享
2020/02/16 Javascript
python使用xauth方式登录饭否网然后发消息
2014/04/11 Python
Mac下Supervisor进程监控管理工具的安装与配置
2014/12/16 Python
Python dict的常用方法示例代码
2020/06/23 Python
YOINS官网:时尚女装网上购物
2017/03/17 全球购物
法国购买隐形眼镜和眼镜网站:Optical Center
2019/10/08 全球购物
Java多态性的定义以及类型
2014/09/16 面试题
学生个人求职自荐信格式
2013/09/23 职场文书
写好自荐信的几个要点
2013/12/26 职场文书
2015年煤矿安全工作总结
2015/05/23 职场文书
毕业论文答辩开场白和答辩技巧
2015/05/27 职场文书
2016年春季趣味运动会开幕词
2016/03/04 职场文书
创业计划书之书店
2019/09/10 职场文书
Filebeat 采集 Nginx 日志的方法
2021/03/31 Servers
pytorch常用数据类型所占字节数对照表一览
2021/05/17 Python
如何利用pygame实现打飞机小游戏
2021/05/30 Python