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 相关文章推荐
window.event快达到全浏览器支持了,以后使用就方便了
Nov 30 Javascript
javascript unicode与GBK2312(中文)编码转换方法
Nov 14 Javascript
jQuery将多条数据插入模态框的示例代码
Sep 25 Javascript
JS前端笔试题分析
Dec 19 Javascript
微信小程序 仿猫眼实现实例代码
Mar 14 Javascript
JS简单实现获取元素的封装操作示例
Apr 07 Javascript
利用JavaScript的%做隔行换色的实例
Nov 25 Javascript
用 Vue.js 递归组件实现可折叠的树形菜单(demo)
Dec 25 Javascript
vue底部加载更多的实例代码
Jun 29 Javascript
实例详解vue.js浅度监听和深度监听及watch用法
Aug 16 Javascript
详解Vue Elementui中的Tag与页面其它元素相互交互的两三事
Sep 25 Javascript
Node.js 中判断一个文件是否存在
Aug 24 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中使用模板的方法
2008/05/24 PHP
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
析构函数与php的垃圾回收机制详解
2013/10/28 PHP
php获取中文拼音首字母类和函数分享
2014/04/24 PHP
Smarty中的注释和截断功能介绍
2015/04/09 PHP
php socket通信(tcp/udp)实例分析
2016/02/14 PHP
php自动载入类用法实例分析
2016/06/24 PHP
PHP实现图片压缩
2020/09/09 PHP
浅谈PHP无限极分类原理
2019/03/14 PHP
JavaScript 提升运行速度之循环篇 译文
2009/08/15 Javascript
利用jQuery插件扩展识别浏览器内核与外壳的类型和版本的实现代码
2011/10/22 Javascript
javascript阻止scroll事件多次执行的思路及实现
2013/11/08 Javascript
eclipse导入jquery包后报错的解决方法
2014/02/17 Javascript
vuejs动态组件给子组件传递数据的方法详解
2016/09/09 Javascript
JavaScript 是什么意思
2016/09/22 Javascript
JavaScript实现的XML与JSON互转功能详解
2017/02/16 Javascript
原JS实现banner图的常用功能
2017/06/12 Javascript
javascript Function函数理解与实战
2017/12/01 Javascript
JS中实现隐藏部分姓名或者电话号码的代码
2018/07/17 Javascript
详解使用VueJS开发项目中的兼容问题
2018/08/02 Javascript
微信小程序如何获取手机验证码
2018/11/04 Javascript
详解如何使用node.js的开发框架express创建一个web应用
2018/12/20 Javascript
vue过滤器用法实例分析
2019/03/15 Javascript
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
2020/07/28 Javascript
[03:57]DOTA2英雄梦之声_第03期_幻影刺客
2014/06/21 DOTA
[01:38]2018DOTA2亚洲邀请赛主赛事第二日现场采访 神秘商人痛陈生计不易
2018/04/05 DOTA
linux环境下安装pyramid和新建项目的步骤
2013/11/27 Python
详解在python操作数据库中游标的使用方法
2019/11/12 Python
Python pandas自定义函数的使用方法示例
2019/11/20 Python
HTML5离线应用与客户端存储的实现
2018/05/03 HTML / CSS
有影响力的品牌之家:Our Social Collective
2019/06/08 全球购物
小型女装店的创业计划书
2014/01/09 职场文书
大学同学十年聚会感言
2014/02/21 职场文书
升旗仪式主持词
2014/03/19 职场文书
品牌服务方案
2014/06/03 职场文书
初婚未育证明样本
2015/06/18 职场文书