javaScript淺拷貝 深拷貝

2021-09-12 18:10:08 字數 1559 閱讀 9521

資料型別

js的資料型別有兩種:

1.基本資料型別:數值、字串、布林、null、undefined (值型別)

存放在棧中,所以複製基本資料型別的值是會新開乙個棧記憶體

淺拷貝

如果我們要複製物件的所有屬性都不是引用型別時,就可以使用淺拷貝,實現方式就是遍歷並複製,最後返回新的物件。

深拷貝

深度拷貝就是把父物件拷貝到子物件上,而且兩者的記憶體和以後的操作都互不影響的拷貝!

1.遞迴

2.借用json物件的parse和stringify

3.jq的extend方法。

$.extend( [deep ], target, object1 ,[ objectn ] )

deep表示是否深拷貝,為true為深拷貝,為false,則為淺拷貝

target object型別 目標物件,其他物件的成員屬性將被附加到該物件上。

object1 objectn可選。 object型別 第乙個以及第n個被合併的物件

jquery.extend()只複製可列舉的屬性,不繼承原型鏈,函式複製引用,內部迴圈引用不處理。而lodash實現的就更為優秀,它實現了結構化轉殖演算法。

JavaScript深拷貝 淺拷貝

淺拷貝 淺拷貝只是複製了記憶體位址,如果原位址中的物件改變了,淺拷貝出來的物件也會相應改變。深拷貝 開闢了一塊新的記憶體存放位址和位址指向的物件,原位址的任何物件改變了,深拷貝出來的物件不變。淺拷貝陣列 只拷貝第一級陣列 1.直接遍歷var arr 1,2,3,4 function copy arg...

javaScript淺拷貝 深拷貝

資料型別 js的資料型別有兩種 1.基本資料型別 數值 字串 布林 null undefined 值型別 存放在棧中,所以複製基本資料型別的值是會新開乙個棧記憶體 淺拷貝 如果我們要複製物件的所有屬性都不是引用型別時,就可以使用淺拷貝,實現方式就是遍歷並複製,最後返回新的物件。深拷貝 深度拷貝就是把...

javascript 淺拷貝和深拷貝

簡單的賦值就是淺拷貝。因為物件和陣列在賦值的時候都是引用傳遞。賦值的時候只是傳遞乙個指標。看下面的例項 var a 1,2,3 var b a var test var c test console.log a console.log b console.log test console.log b...