深入理解JavaScript中的对象复制(Object Clone)
JavaScript中并没有直接提供对象复制(ObjectClone)的方法。因此下面的代码中改变对象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(){
varcopy=(thisinstanceofArray)?[]:{};
for(attrinthis){
if(!obj.hasOwnProperty(attr))continue;
copy[attr]=(typeofthis[i]=="object")?obj[attr].clone():obj[attr];
}
returncopy;
};
a={k1:1,k2:2,k3:3};
b=a.clone();
下面的例子则考虑的更全面些,适用于大部分对象的深度复制(DeepCopy)。
functionclone(obj){
//Handlethe3simpletypes,andnullorundefined
if(null==obj||"object"!=typeofobj)returnobj;
//HandleDate
if(objinstanceofDate){
varcopy=newDate();
copy.setTime(obj.getTime());
returncopy;
}
//HandleArray
if(objinstanceofArray){
varcopy=[];
for(vari=0,varlen=obj.length;i<len;++i){
copy[i]=clone(obj[i]);
}
returncopy;
}
//HandleObject
if(objinstanceofObject){
varcopy={};
for(varattrinobj){
if(obj.hasOwnProperty(attr))copy[attr]=clone(obj[attr]);
}
returncopy;
}
thrownewError("Unabletocopyobj!Itstypeisn'tsupported.");
}
以上这篇深入理解JavaScript中的对象复制(ObjectClone)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下