//这个存在引用关系 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
时间: 2024-08-04 07:28:07