对象引用(深、浅拷贝)
//这个存在引用关系
var a=[1,2,3];
var b=a;
b.push(4);
alert(b);//1,2,3,4
alert(a);//1,2,3,4
//这个就不存在引用关系
//b重新赋值了就会重开一个地址
var a=[1,2,3];
var b=a;
b=[1,2,3,4];
alert(b);//1,2,3,4
alert(a);//1,2,3
var obj1={a:10};
var obj2=obj1;
obj2.a=20;
alert(obj1.a);//20;
var obj1={
a:10
};
function copy(obj){//浅拷贝
var newOjb={};
for(var attr in obj){
newOjb[attr]=obj[attr];
}
return newOjb;
}
//如果上面是var obj1={a:{b:10}}就要进行深入的查找
function deepCopy(obj){//深拷贝
var newOjb={};
if(typeof obj1 !="object"){//终止条件
return obj1;//返回最初的10
}
for(var attr in obj){
newOjb[attr]=deepCopy(obj1[attr]);//递归
}
return newOjb;
}
var obj2=copy(obj);
obj2.a=20;
alert(obj1.a)//10