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
歡迎搜索微信公衆號:一線碼農
或掃碼關注:
圖片