1、採用json轉換的形式
json
.parse
(json
.stringify()
)
2、通過jquery的extend形式
var array =[1
,2,3
,4];
var newarray = $.
extend
(true,[
],array)
;
3、通過遞迴的形式
function
deepclone
(obj)
;// 進行深拷貝的不能為空
if(obj &&
typeof obj ===
'object'
)else}}
}return objclone;
}
4、通過object.assign()拷貝
當物件只有一級屬性的時候,沒有第二級屬性,則此方法是深拷貝,
如果有第二級屬性,則二級以後都是淺拷貝
5、lodash函式庫實現深拷貝
lodash很熱門的函式庫,提供了 lodash.
clonedeep
()實現深拷貝
import lodash from
'lodash'
var obj =
,fn:
function()
};var obj2 = lodash.
clonedeep
(obj)
;obj2.name.a =
'obj2'
;console.
log(obj,obj2)
lodash的clonedeep函式能夠很方便的拷貝物件,但是一旦拷貝一些很複雜的物件就有可能報錯。
比如用clonedeep轉殖乙個vue例項,就有可能包key.charat is not a function的錯。
(正確的拷貝方法是vue.
extend
())。
一般來說複雜的物件都會內建拷貝方法,使用內建的方法拷貝會比lodash的clonedeep要安全得多。
遇到比較簡單的物件我們們應該直接呼叫clone方法而不是clonedeep
(或者json
.parse
(json
.stringify
(obj)
)),這樣既保險也可以減少效能損耗。
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 ...