其實用json.stringfy()和json.parse()就可以。
var copy = json.parse(json.stringify(物件名))
但是這種簡單粗暴的方法有其侷限性。當值為undefined、function、symbol 會在轉換過程中被忽略。。。所以,物件值有這三種的話用這種方法會導致屬性丟失。
如何區分深拷貝與淺拷貝,簡單點來說,就是假設b複製了a,當修改a時,看b是否會發生變化,如果b也跟著變了,說明這是淺拷貝,拿人手短,如果b沒變,那就是深拷貝
json.stringify與json.parse除了實現深拷貝,還能結合localstorage實現物件陣列儲存
為了防止這些問題,寫了函式處理這些條件
function deepcopy(obj) ;
for (var key in obj) else }}
return result;
}一些object.assgin(), 陣列的slice()這些方法,只複製了基本型別資料型別,不是真正意義的深複製
JS物件複製 深拷貝 淺拷貝
在本文中,我們將從淺拷貝 shallow copy 和深拷貝 deep copy 兩個方面,介紹多種 js 中複製物件的方法。var foo console.log foo.a abc var bar foo console.log bar.a abc foo.a yo foo console.lo...
js物件深拷貝
由於引用型別 陣列 物件 是按位址傳遞,直接拷貝是淺拷貝,即修改拷貝後的變數,原變數也會改變。有時需要深拷貝乙個物件,這時就需要遍歷徹底複製,使原物件和拷貝物件完全脫離關係。function deepcloneobj obj for i in obj return o 實現細節 假定傳入的是乙個引用...
深複製和淺複製 js物件拷貝的方法
js物件拷貝的方法 物件拷貝的方法是乙個難點,尤其是深拷貝。建議把 都執行下,幫助理解拷貝。1.適合情況 json物件的深度轉殖。方法是先json.stringify 轉為json字串,再json.parse 轉為json陣列 2.缺點 a.如果你的物件裡有函式,函式無法被拷貝下來 b.無法拷貝co...