淺拷貝是隻複製一層對象屬性,是對地址的複製,即複製的兩個對象指向同一塊地址。
深拷貝是複製所有層對象屬性,是對指針的複製,即開闢出一塊新的內存地址,將元對象的各個屬性逐個複製過去。
淺拷貝代碼:
var obj1 = {
a:{b:10}
}
function shallowCopy (obj){
var dst = {};
for(var prop in obj){
if(obj.hasOwnProperty(prop)){
dst[prop] = obj[prop];
}
}
return dst;
}
var obj2 = shallowCopy(obj1);
深拷貝代碼:
function deepCopy(obj){
var newObj = {};
if(typeof obj != 'object'){
return obj;
}
for(var attr in obj){
newObj[attr] = deepCopy(obj[attr]);
}
return newObj;
}
var obj3 = deepCopy(obj1);
注:js的深拷貝比較複雜,使用場景不同,變化衆多,本文只做簡單的代碼說明,如有任何問題,可在下方評論區提出,謝謝!
希望我的入坑經驗對你有所幫助,願聖光與你同在