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 相关文章推荐
extjs fckeditor集成代码
May 10 Javascript
javascript在子页面中函数无法调试问题解决方法
Jan 17 Javascript
javascript检查浏览器是否支持flash的实现代码
Aug 14 Javascript
jQuery.each使用详解
Jul 07 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
Nov 07 Javascript
微信小程序 swiper组件轮播图详解及实例
Nov 16 Javascript
Vue组件开发技巧总结
Mar 04 Javascript
Node.js模块全局安装路径配置方法
May 17 Javascript
微信小程序自定义音乐进度条的实例代码
Aug 28 Javascript
Vue项目安装插件并保存
Jan 28 Javascript
简单实现vue中的依赖收集与响应的方法
Feb 18 Javascript
在Webpack中用url-loader处理图片和字体的问题
Apr 28 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 变量定义方法
2009/06/14 PHP
解读PHP中上传文件的处理问题
2016/05/29 PHP
ThinkPHP实现图片上传操作的方法详解
2017/05/08 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
基于jQuery的投票系统显示结果插件
2011/08/12 Javascript
juery框架写的弹窗效果适合新手
2013/11/27 Javascript
javascript里绝对用的上的字符分割函数总结
2014/07/31 Javascript
JQuery简单实现锚点链接的平滑滚动
2015/05/03 Javascript
jquery实现图片随机排列的方法
2015/05/04 Javascript
cocos2dx骨骼动画Armature源码剖析(一)
2015/09/08 Javascript
JS瀑布流实现方法实例分析
2016/12/19 Javascript
ionic 3.0+ 项目搭建运行环境的教程
2017/08/09 Javascript
在Js页面通过POST传递参数跳转到新页面详解
2017/08/25 Javascript
JavaScript设计模式之建造者模式实例教程
2018/07/02 Javascript
Bootstrap标签页(Tab)插件切换echarts不显示问题的解决
2018/07/13 Javascript
JavaScript刷新页面的几种方法总结
2019/03/28 Javascript
微信小程序上传多图到服务器并获取返回的路径
2019/05/05 Javascript
js实现图片推拉门效果代码实例
2019/05/18 Javascript
详解在vue-cli3.0中自定css、js和图片的打包路径
2019/08/26 Javascript
Vue中使用better-scroll实现轮播图组件
2020/03/07 Javascript
Python中用Decorator来简化元编程的教程
2015/04/13 Python
对python读写文件去重、RE、set的使用详解
2018/12/11 Python
基于Python打造账号共享浏览器功能
2019/05/30 Python
关于阿里云oss获取sts凭证 app直传 python的实例
2019/08/20 Python
pytorch forward两个参数实例
2020/01/17 Python
Python 基于jwt实现认证机制流程解析
2020/06/22 Python
纯CSS3实现绘制各种图形实现代码详细整理
2012/12/26 HTML / CSS
领先的钻石和订婚戒指零售商:Diamonds-USA
2016/12/11 全球购物
Omio意大利:全欧洲低价大巴、火车和航班搜索和比价
2017/12/02 全球购物
Nike比利时官网:Nike.com (BE)
2019/02/07 全球购物
古驰英国官网:GUCCI英国
2020/03/07 全球购物
什么是TCP/IP
2014/07/27 面试题
高中生物教学反思
2014/02/05 职场文书
python 实现图片特效处理
2022/04/03 Python
Python tensorflow卷积神经Inception V3网络结构
2022/05/06 Python