1. 程式人生 > >深拷貝與淺拷貝的理解與區別

深拷貝與淺拷貝的理解與區別

一 . 淺拷貝與深拷貝的區別

    深拷貝:指的是拷貝一個物件時,它是把物件的引用進行復制,還把改物件引用的值也一起拷貝. 這樣進行深拷貝過後的拷貝物件和源物件就是兩個相互獨立互不相干的物件,深拷貝在拷貝時 遇到相同屬性的則替換,不同的則保留,常用於拷貝多層屬性的物件!

     淺拷貝: 指的是拷貝一個物件時,他只是把源物件的引入進行一個拷貝,但是拷貝出來的物件和源物件還是指向同一個引用,所以不管你修改源物件還是拷貝物件都會影響到另一個物件。淺拷貝在拷貝時,遇到相同的屬性直接替換 不管是否是多層屬性!

二. 淺拷貝的實現方法

    2.1 Object.assign() 方法 該方法進行的是一個淺拷貝。 該方法可接受三個引數Object.assign({}, 目標物件, 源物件(可有多個))

     

   列印小明 小明是 (相同屬性直接替換)

                            

三. 深拷貝的方法:

3.1 json.parse(json.stringify(源物件))

控制檯列印:

深拷貝出來的新物件進行修改時並不會造成源對像修改。在實際開發中也是非常有用的。例如後臺返回了一堆資料,你需要對這堆資料做操作,但多人開發情況下,你是沒辦法明確這堆資料是否有其它功能也需要使用,直接修改可能會造成隱性問題,深拷貝能幫你更安全安心的去操作資料,根據實際情況來使用深拷貝。