博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转】JavaScript中的对象复制(Object Clone)
阅读量:6550 次
发布时间:2019-06-24

本文共 1217 字,大约阅读时间需要 4 分钟。

JavaScript中并没有直接提供对象复制(Object Clone)的方法。因此下面的代码中改变对象b的时候,也就改变了对象a。

a = {k1:1, k2:2, k3:3}; b = a; b.k2 = 4;

如果只想改变b而保持a不变,就需要对对象a进行复制。

用jQuery进行对象复制

 

在可以使用jQuery的情况下,jQuery自带的extend方法可以用来实现对象的复制。

a = {k1:1, k2:2, k3:3}; b = {}; $.extend(b,a);
 

自定义clone()方法来实现对象复制

下面的方法,是对象复制的基本想法。

Object.prototype.clone = function() { var copy = (this instanceof Array) ? [] : {}; for (attr in this) { if (!obj.hasOwnProperty(attr)) continue; copy[attr] = (typeof this[i] == "object")?obj[attr].clone():obj[attr]; } return copy; }; a = {k1:1, k2:2, k3:3}; b = a.clone();

下面的例子则考虑的更全面些,适用于大部分对象的深度复制(Deep Copy)。

function clone(obj) { // Handle the 3 simple types, and null or undefined if (null == obj || "object" != typeof obj) return obj; // Handle Date if (obj instanceof Date) { var copy = new Date(); copy.setTime(obj.getTime()); return copy; } // Handle Array if (obj instanceof Array) { var copy = []; for (var i = 0, var len = obj.length; i < len; ++i) { copy[i] = clone(obj[i]); } return copy; } // Handle Object if (obj instanceof Object) { var copy = {}; for (var attr in obj) { if (obj.hasOwnProperty(attr)) copy[attr] = clone(obj[attr]); } return copy; } throw new Error("Unable to copy obj! Its type isn't supported."); }

转载地址:http://fouco.baihongyu.com/

你可能感兴趣的文章
在html中使用特殊字体
查看>>
Python 爬虫十六式 - 第六式:JQuery的假兄弟-pyquery
查看>>
TextMesh Pro
查看>>
关于A类,B类,C类IP地址的网段和主机数的计算方法
查看>>
android调试
查看>>
win10环境下配置django+Apache2.4.38+python3.6项目
查看>>
Url栏目导航判断
查看>>
南阳理工904
查看>>
如何通过当前地区经纬度,搜索数据库存储的地区(距离最近的地区)
查看>>
python-根据URL地址下载文件
查看>>
jshint在bat批处理中闪退,代码中无法调用的问题
查看>>
js 杂症,this with 变量提升
查看>>
easyui的 一些经验
查看>>
深度学习梯度消失或爆炸问题
查看>>
python loss layer: does not need backward computation?
查看>>
本地通知
查看>>
jQuery基础
查看>>
iOS实现提现类似的密码输入框
查看>>
GWT环境搭建--eclipse
查看>>
mybatis学习
查看>>