1 //浅复制
2 var obj={
3 a:{
4 son1:'aa', //obj对象里的a也是个对象
5 son2:'bb'
6 },
7 b:20
8 };
9
10 function copy(obj){
11 var newobj={};
12 for(arr in obj)
13 {
14 newobj[arr]=obj[arr]
15 }
16 return newobj;
17 }
18
19 obj2=copy(obj);
20 alert(obj2.a.son1);//成功复制出obj的a
21 obj.a.son1=555; //更改了obj的a.son2
22 alert(obj2.a.son1);//obj2的a.son1也随之改变
//深复制
var obj={
a:{aa:10},//浅拷贝解决不了对象中的对象
b:11
};
function deepcopy(obj){
if(typeof obj!='object') //检验是否彻底
{
return obj;
}
var newobj={};
for(var attr in obj)
{
newobj[attr]=deepcopy(obj[attr]); //递归 (核心代码)
}
return newobj;
}
var obj2=deepcopy(obj);
alert(obj.a.aa);//10
alert(obj2.a.aa);//10 成功复制深层对象aa
obj2.a.aa=22; //改变obj2的a的aa
alert(obj2.a.aa);// 改变
alert(obj.a.aa);//10 不变