js的深拷貝和淺拷貝

淺拷貝是隻複製一層對象屬性,是對地址的複製,即複製的兩個對象指向同一塊地址。
深拷貝是複製所有層對象屬性,是對指針的複製,即開闢出一塊新的內存地址,將元對象的各個屬性逐個複製過去。
淺拷貝代碼:
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的深拷貝比較複雜,使用場景不同,變化衆多,本文只做簡單的代碼說明,如有任何問題,可在下方評論區提出,謝謝!


希望我的入坑經驗對你有所幫助,願聖光與你同在

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章