深拷貝和淺拷貝的幾種方法

2021-10-08 20:14:55 字數 887 閱讀 6423

for… in… 迴圈

var a=

}var b=

for(

var k in a)

2.object.assgin(),與=號區別在於,=修改了a.name就會變化,而這個不會變,但是這個到下面一層也會變化!就是說等號只進行了一層深拷貝。

var a=

}var b=object.

assign

(,a)

如果b原來是有屬性的物件,並且同名的話,會被a的屬性覆蓋

var a=

}var b=

b=object.

assign

(b,a)

3.擴充套件運算子

4.loadsh庫

1.用json的方法(方法對於undefined和function不進行任何拷貝)

var a=

}var b=

json

.parse

(json

.stringify

(a))

2.用for…in…+遞迴

var a=

}var b=

function

deepcopy

(newobj,oldobj)

else

if(item instanceof

object);

deepcopy

(newobj[k]

,item)

}else};

}deepcopy

(b,a)

3.loadsh庫

js淺拷貝及深拷貝的幾種方法

object.assign我們經常會用到合併物件,當然利用object.assign性質我們也可以實現物件的拷貝。var obj1 var obj2 object.assign obj1 obj2.a 4 console.log obj1,obj2 結果如圖 這裡要注意的是object.assign...

深拷貝與淺拷貝的區別,實現深拷貝的幾種方法

原博位址 如何區分深拷貝與淺拷貝,簡單點來說,就是假設b複製了a,當修改a時,如果b也跟著變了,說明這是淺拷貝,拿人手短,如果b沒變,那就是深拷貝,自食其力。主要原因是不同的資料型別,在記憶體中的儲存方式不同,棧堆,基本資料型別與引用資料型別。變數和 值都存在棧中,當b複製了a,就是把這個關係複製了...

陣列深拷貝 js深拷貝的幾種方法

1.使用遞迴 使用遞迴的方式實現陣列 物件的深拷貝function deepclone obj 進行深拷貝的不能為空,並且是物件 if obj typeof obj object else return objclone 2.通過json物件 通過js的內建物件json來進行陣列物件的深拷貝func...