js 深複製(深拷貝)和淺複製(淺拷貝)的區別

2021-07-17 01:46:34 字數 625 閱讀 3551

最近在做專案的時候,發現deepcopy()這個函式,顧名思義是深複製的意思,有了深複製反向思考肯定有淺複製,查閱資料之後便做下整理~

個人理解,深複製和淺複製最根本的區別在於**是否是真正獲取了乙個物件的複製實體而不是乙個引用**,從深層次上講深複製在計算機中開闢了一塊記憶體位址用於存放複製的物件,而淺複製僅僅是指向被複製的記憶體位址,如果原位址中物件被改變了,那麼淺複製出來的物件也會相應改變,廢話不多,上碼!

var deepcopy = function

(obj);

if(typeof obj !== 'object') else

if(window.json) else

}return newobj;

};var obj = ;

var obj1 = obj;

var obj2 = deepcopy(obj);

obj.a = 2

console.log(obj1.a, obj2.a)

//輸出 2 1

以上**可以看出,淺複製後,因為是原物件的引用,所以在原物件屬性a的值改變後,其物件也發生了改變,但是深複製後的物件卻沒有發生變化,可用於防止巢狀複製自身而變成死迴圈

Python深複製淺複製or深拷貝淺拷貝

簡單點說 1.copy.copy 淺拷貝 只拷貝父物件,不會拷貝物件的內部的子物件。2.copy.deepcopy 深拷貝 拷貝物件及其子物件 用乙個簡單的例子說明如下 import copy a 1,2,3,4,a b c b a c copy.copy a d copy.deepcopy a 很...

轉 Python深複製淺複製or深拷貝淺拷貝

copy.copy 淺拷貝 只拷貝父物件,不會拷貝物件的內部的子物件。copy.deepcopy 深拷貝 拷貝物件及其子物件 用乙個簡單的例子說明如下 import copy a 1,2,3,4,a b c b a c copy.copy a d copy.deepcopy a 很容易理解 a是乙個...

JS物件複製 深拷貝 淺拷貝

在本文中,我們將從淺拷貝 shallow copy 和深拷貝 deep copy 兩個方面,介紹多種 js 中複製物件的方法。var foo console.log foo.a abc var bar foo console.log bar.a abc foo.a yo foo console.lo...