javascript深拷貝和淺拷貝 筆記

2021-09-24 12:57:39 字數 1025 閱讀 6805

/*

* 淺拷貝

*/let a = [0,1,2,3,4,5],

b = a;

a[0] = 99;

console.log(a + "______" + b);

/* * 深拷貝

*/// 第一種 遞迴

function deepclone (obj) ;

if (obj && typeof obj === 'object') else }}

}return objclone;

}let a = [0,1,2,3,4,5],

b = deepclone(a);

a[0] = 999;

console.log(a + ' = a;b = ' + b);

// 第二種 json物件的parse和stringify

function deepclone (obj)

let q = [1,2,[66,88],4],

l = deepclone(q);

q[0] = 666;

q[2] [0] = 999;

console.log(q + "_____" + l); // 輸出 666,2,999,88,4_____1,2,66,88,4

// 第三種 jquery的extend方法

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

* deep表示是否深拷貝,true 深拷貝、false 淺拷貝

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

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

*/let a = [0,1,[2,3],4],

b = $.extend(true,,a);

a[0] = 1;

a[2] [0] = 1;

console.log(a + "_____" + b);

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...

JavaScript深拷貝和淺拷貝

我們在專案開發過程中經常會拿到乙個資料後需要拷貝乙份副本出來進行操作,而且會發現在很多前端框架中都是拷貝乙份操作的,那麼這就涉及到了 js 中對資料的深淺拷貝問題,所謂深淺拷貝,淺拷貝的意思就是,你只是複製了物件資料的引用,並沒有把記憶體裡的值另外複製乙份,那麼深拷貝就是把值完整地複製乙份新的值。那...

JavaScript深拷貝 淺拷貝

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