深拷貝理解

2021-07-12 01:21:24 字數 799 閱讀 4465

淺拷貝:只是單獨的拷貝指標,只想同乙個位址,在瀏覽器呼叫函式進行析構時,兩個指標指向同乙個位址,同乙份資源析構兩次,會造成程式崩潰

陣列的拷貝:

var arr = ["zhangsna","lisi1","chenwu"];

var arr0 = arr;

arr0[1] = "maliu";

為了實現深拷貝我們利用 slice():複製原陣列,形成乙個新的陣列,原有陣列不改變 concat():連線多個陣列,原有陣列不改變

var arr = ["zhangsna","lisi1","chenwu"];

var arr0 = arr.slice(0);

arr0[1] = "zhuqi";

concat();

var arr = ["zhangsna","lisi1","chenwu"];

var arr0 = arr.concat();

arr0[1] = "wangba";

物件的拷貝:

var a = ;

var b = new object();

b.name = a.name;

b.age = a.age;

a.name = 'xx';

console.log(b);

console.log(a);

遍歷屬性,賦值乙個新的物件

var deepcopy = function(source);

for(var key in source)

return result;

}

陣列深拷貝 淺拷貝與深拷貝(個人理解)

深拷貝和淺拷貝的區別1 淺拷貝只複製一層物件的屬性 值引用 場景 對於只有一層結構的array和object想要拷貝乙個副本時使用 淺拷貝的實現方式1 es6 的 object.assign 當object只有一層時是深拷貝 var obj var initobj object.assign obj...

淺拷貝,深拷貝的理解

淺拷貝 淺拷貝是將物件的每個屬性進行依次複製,當物件的屬性值是引用型別,實質複製的是其引用,指向的值改也會跟著變化,淺拷貝只拷貝一層 深拷貝 深拷貝複製變數值,對於非基本型別的變數,則遞迴至基本型別變數後,在複製,深拷貝後的物件與原來的物件是完全隔離的,互不影響,深拷貝是層層拷貝 淺拷貝 操作 簡單...

理解「淺拷貝」和「深拷貝」

淺拷貝 將原物件 原陣列 的 引用 直接賦給新物件 新陣列 新物件 新陣列 是原物件 原陣列 的乙個引用。如果改變這個新物件 新陣列 原物件 原陣列 就會改變。深拷貝 將原物件的各項屬性的 值 陣列的所有元素 都拷貝給新物件 新陣列 是拷貝的 值 而不是 引用 為什麼要使用深拷貝?希望改變新物件 新...