Object.assign方法不能實現深複製

Object.assign方法用於對象的合併,將源對象(source)的全部可枚舉屬性,複製到目標對象(target),相似這樣:微信

const target = { a: 1 };

const source1 = { b: 2 };
const source2 = { c: 3 };

Object.assign(target, source1, source2);
target // {a:1, b:2, c:3}

那是否是Object.assign({},obj)就能夠實現深拷貝了?打開console試試spa

圖片描述

能夠看到,copy中的成員跟a同樣,可是copy!==a 說明拷貝成功!可是,若是對象中再包含對象,結果會怎樣code

圖片描述

咱們從打印的內容能夠看出,a中的成員a和copy中的成員a是徹底相等的,意味着在棧中的地址指向是相同的,因此a中的成員a並沒有實現深拷貝,這個時候你更改a.a,copy.a也會跟着變化。對象

圖片描述

結論:【Object.assign方法沒法實現深複製】它只是比淺拷貝深了一層而已。blog

歡迎搜索微信公衆號:一線碼農
或掃碼關注:
圖片描述圖片

相關文章
相關標籤/搜索