操作引用數(shù)類(lèi)型時(shí)我們只要值,不要地址? var obj3={a:10,b:10};
var obj4=obj3;
console.log(obj4==obj3); //操作obj3的值時(shí) obj4的值也被改變了
// 淺拷貝:把對(duì)象里的屬性找出來(lái),復(fù)制出來(lái)組成一個(gè)新的對(duì)象
function copy(obj){
var newObj={};
for(var attr in obj){
newObj[attr]=obj[attr];
}
return newObj;
}
// var obj5=copy(obj3);
// console.log(obj5);//{a:10,b:10}
// console.log(obj3);//{a:10,b:10}
// obj5.a=20;
// console.log(obj5);//{a: 20, b: 10}
// console.log(obj3);//{a:10,b:10}
// 淺拷貝:如果對(duì)象里某個(gè)屬性值是個(gè)對(duì)象數(shù)據(jù)類(lèi)型時(shí),這個(gè)方法就不適用了
var obj={a:10,b:{a:10}}
var obj6=copy(obj);
console.log(obj6);
obj6.b.a=50;
console.log(obj6);
console.log(obj);
function deepCopy(obj){
if(typeof obj!='object'){
return obj;
}
if(obj instanceof Array){
var newObj=[];
}else{
var newObj={};
}
for(var attr in obj){
newObj[attr]=deepCopy(obj[attr]);
}
return newObj;
}
// var obj7={a:10,m:{a:20}}
// var obj8=deepCopy(obj7);
// obj8.m.a=80;
// console.log(obj8,obj7);
var obj9={a:10,m:[1,2,3,6],n:function(){}}
var obj10=deepCopy(obj9);
console.log(obj9,obj10);
obj10.n='a';
console.log(Object.prototype.toString.call(obj9.n))