JS 深淺拷貝 區別 原始碼

2021-10-22 01:38:57 字數 687 閱讀 6432

4.深淺拷貝

淺拷貝:淺拷貝是建立乙個物件,這個新物件有原始物件的乙份精確拷貝

如果是基本屬性型別,拷貝就是基本的型別,如果是引用,則拷貝記憶體位址,所以乙個物件改變了

這個位址,也會影響另外乙個物件

深拷貝:就是將物件從記憶體中完整拷貝出來,從堆的記憶體開闢乙個新區域從放物件,且修改新物件不會影響元物件

賦值和淺拷貝的區別

賦值:當我們把乙個物件賦值給另外乙個物件時就是賦值的是棧記憶體的位址,而不是對中的資料

也就是兩個物件指向同乙個堆中資料,兩個物件是關聯的,乙個遍會影響另乙個

淺拷貝:

重在堆中建立記憶體,拷貝前後,物件的基本資料型別互不影響,但是拷貝後引用物件型別會因共享記憶體受影響

深拷貝:基於淺拷貝,會再拷貝引用型別變數後,在堆中開闢物件,物件的子物件進行遞迴拷貝

拷貝前後,兩個物件互不影響

JS深 淺拷貝

在js中,資料型別分為基本資料型別和引用資料型別兩種。對於基本資料型別來說,它的值直接儲存在棧記憶體中,而對於引用型別來說,它在棧記憶體中只是儲存了乙個指向對記憶體的引用,而真正的資料儲存在堆記憶體中。object array 這兩個就是引用型別,當我門直接去拷貝的話 copyobj obj 拷貝的...

js 深淺拷貝

深拷貝就是複製內部內容 淺拷貝就是複製記憶體位址 var obj 淺拷貝 引用傳遞 淺拷貝就是賦值,將鑰匙複製乙份 var o obj 深拷貝 內部內容複製乙份 將房子複製乙份 方法一 var str json stringify obj var obj3 json parse str 方法二 va...

js深淺拷貝

1.什麼是深淺拷貝 簡單的來說,加入b複製a a改變 如果b也跟著改變的話,那就是淺拷貝,反之是深拷貝 實現淺拷貝方法 1.賦值操作 var a 0 1,2 3,4 var b a a 0 5console log a 5,1,2,3,4 console log b 5,1,2,3,4 2.es6 ...