前言:js中資料分為基本型別和引用型別,基本型別變數在使用時可以被直接訪問,不存在深淺拷貝一說;而引用型別,由於其值變數存放在堆中,棧中存放的是指向堆中值的位址,所有在使用引用型別變數時,使用的是棧中的引用位址。
深淺拷貝:簡單來說就是把object型別的資料複製後進行修改,修改後的值對原值沒有影響為深拷貝;反之,改變了原值就是淺拷貝。由於object資料在複製後操作會影響到原值,在某些情況下並不是我們想要的,想要解決這個問題就要用到資料的深拷貝,對於資料深拷貝,本人比較喜歡如下兩種,尤其是第一種在使用起來非常簡單暴力:
把object轉成json字串,在將json串反轉成object物件
let obj =
let obj1 ;
let strobj =
json
.stringify
(obj)
; obj1 =
json
.parse
(strobj)
;//obj1 = son.parse(json.stringify(object));
花裡胡哨的深拷貝json.parse(json.stringify(object))一句**搞定 0.0 。
建立新的物件,遞迴迴圈直到其為基本型別然後複製過去
deepcopy:
(data)
=>
for(item in data)
else
}return copyobj
}
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 ...