資料型別
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...