javascript深拷貝與淺拷貝

2021-08-16 00:09:03 字數 473 閱讀 6321

深拷貝:複製出的新變數的改變不會影響原變數。

淺拷貝:複製出的新變數的改變會影響原變數。

js中實現深拷貝的幾種方法和優缺點:

1手動實現(只使用於一層物件,實際是淺拷貝?)

function

deepclone(obj,copy);

for(var

keyin

obj));

for(variin

obj);

var index = arr2.indexof(obj);

if(index != -1) =obj;

return ;

5.es6 object.assign()方法

function

deepclone(obj);

obj2=object.assign(obj2,obj);

return

obj2;

但是這個方法只適用於只有一層物件

JavaScript深拷貝 淺拷貝

淺拷貝 淺拷貝只是複製了記憶體位址,如果原位址中的物件改變了,淺拷貝出來的物件也會相應改變。深拷貝 開闢了一塊新的記憶體存放位址和位址指向的物件,原位址的任何物件改變了,深拷貝出來的物件不變。淺拷貝陣列 只拷貝第一級陣列 1.直接遍歷var arr 1,2,3,4 function copy arg...

javaScript淺拷貝 深拷貝

資料型別 js的資料型別有兩種 1.基本資料型別 數值 字串 布林 null undefined 值型別 存放在棧中,所以複製基本資料型別的值是會新開乙個棧記憶體 淺拷貝 如果我們要複製物件的所有屬性都不是引用型別時,就可以使用淺拷貝,實現方式就是遍歷並複製,最後返回新的物件。深拷貝 深度拷貝就是把...

javaScript淺拷貝 深拷貝

資料型別 js的資料型別有兩種 1.基本資料型別 數值 字串 布林 null undefined 值型別 存放在棧中,所以複製基本資料型別的值是會新開乙個棧記憶體 淺拷貝 如果我們要複製物件的所有屬性都不是引用型別時,就可以使用淺拷貝,實現方式就是遍歷並複製,最後返回新的物件。深拷貝 深度拷貝就是把...