淺拷貝:
var obj = {
name:'wsscat',
age:0
}
var obj2 = obj;
obj2['c'] = 5;
console.log(obj);//Object {name: "wsscat", age: 0, c: 5}
console.log(obj2);////Object {name: "wsscat", age: 0, c: 5}
深拷貝:
Object.prototype.deepCopy=function(){
var obj=null;//用于最后返回一個(gè)對象,這個(gè)對象是深復(fù)制的結(jié)果
for(var attr in this){//遍歷這個(gè)對象的每一個(gè)屬性
if(this.hasOwnProperty(attr)){//主要是遞歸自有屬性
if(typeof (this[attr]==='object')){//如果對象的屬性是一個(gè)對象,就遞歸復(fù)制它的每一個(gè)屬性
if(this[attr]===null){//如果對象為null
obj[attr]=null;
}else if(Object.prototype.toString(this[attr])==='[object Array]'){//如果是個(gè)數(shù)組
obj[attr]=[];
for(var i=0;i<this[attr].length;i++){
obj[attr].push(this[attr][i].deepCopy());
}
}else{//object
obj[attr]=this[attr].deepCopy();
}
}else{
obj[attr]=this[attr];
}
}
}
return obj;
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者