js 中陣列或者物件的深拷貝和淺拷貝

2022-08-15 22:36:17 字數 375 閱讀 7108

淺拷貝 : 就是兩個js 物件指向同一塊記憶體位址,所以當obj1 ,obj2指向obj3的時候,一旦其中乙個改變,其他的便會改變!

深拷貝:就是重新複製一塊記憶體,這樣就不會互相影響。

有些時候我們定義乙個陣列,把這個資料賦值給跟多物件陣列中的乙個字段,當我們改變物件陣列中的該字段的時候,我們會把原來的陣列也改變了,這樣就會引起其他陣列物件中的對應的字段改變,這不是我們想要的。

這個時候我們會用到深拷貝。

方法://js 深拷貝方法

var deepcopy = function(source)

);for (var key in source)

return result;

}賦值之前呼叫這個方法即可。

JS 物件陣列淺拷貝,深拷貝

物件陣列的深拷貝與淺拷貝,簡單點來說,就是b複製了a,當a被修改時,未操作b,但b也跟著變了,就是淺拷貝,反之是深拷貝 深拷貝本身只針對較為複雜的object型別資料 淺拷貝 var a var b a a 1 age 18 console.log a,b 執行結果,a,b的age都發生了改變 偽深...

JS陣列和物件的淺拷貝和深拷貝

共勉 在許多程式語言中,傳遞引數和賦值是通過值的直接複製或者引用複製完成的。在j ascript中,對於值是直接進行複製還是引用複製在語法上是沒有區別的,完全是根據值的型別來決定的。在j ascript中,簡單值總是通過值的直接複製來進行賦值傳遞的 null,undefined,字串,數字,布林,s...

Js中物件的深拷貝和淺拷貝

淺拷貝 只拷貝物件的基礎屬性值,對屬性值為物件或陣列的屬性則拷貝指標。深拷貝 拷貝物件的所有屬性作為乙個全新的物件。拷貝前後的物件互不影響。淺拷貝僅僅是指向被複製的記憶體位址,如果原位址中物件被改變了,那麼 深拷貝出來的物件也會相應改變。一 物件引用 物件引用容易理解,直接賦值,修改複製後的陣列,原...