定義:
1.深拷貝
function deepcopy(obj)
var obj = $/,
say: () =>
}console.log(deepcopy(obj)); // }
注意:這種拷貝方法不可以拷貝一些特殊的屬性(例如正規表示式,undefine,function)
function deepcopytwo(obj) ;
if (obj && typeof obj == 'object') else }}
return objclone;
}var obj = $/,
say: () =>
}console.log(deepcopy(obj)); // }
淺拷貝
function ******clone(initalobj) ;
for ( var i in initalobj)
return obj;
}var obj = ,
c:["bob", "tom", "jenny"],
d:function()
}var obj1 = ******clone(obj);
console.log('obj1=>>>',obj1); // , c: (3) ["bob", "tom", "jenny"], d: ƒ () }
obj1.c = ['mm', "tom", "jenny"]; // 一層,作為整體,重寫,全改變;改變屬性值,不改變原物件
console.log('obj=>>>',obj); // obj.c => ["bob", "tom", "jenny"]
obj1.c[0] = 'mm'; // 淺拷貝時,改變屬性的屬性值,改變原物件
console.log('obj=>>>',obj); // obj.c => ["mm", "tom", "jenny"]
js實現深拷貝和淺拷貝
let obj let newobj obj.age.age 25 修改第二層的obj.age.age,newobj.age.age也會跟著變化 console.log newobj 複製 注意 資料的slice和concat方法也是淺拷貝,只能拷貝一層 原理 把乙個物件轉化成乙個字串,再把這個字串...
js實現深拷貝和淺拷貝
淺拷貝 思路 把父物件的屬性,全部拷貝給子物件,實現繼承。問題 如果父物件的屬性等於陣列或另乙個物件,那麼實際上,子物件獲得的只是乙個記憶體位址,不會開闢新棧,不是真正拷貝,因此存在父物件被篡改的可能。function deepcopy o for i in o return f 深拷貝 思路 遞迴...
JS 深拷貝和淺拷貝概念,以及實現深拷貝的三種方式
1 堆疊 棧 stack 系統自動分配的記憶體空間,記憶體會由系統自動釋放,用來存放函式的引數值,區域性變數的值等,特點是先進後出。堆 heap 系統動態分配的記憶體,記憶體大小不一,記憶體不會自動釋放。一般由程式設計師分配釋放,主要負責像obejct這種變數型別的儲存。2 基本資料型別 概念 存放...