JavaScript中的深拷貝和淺拷貝

2021-08-04 02:54:01 字數 529 閱讀 5596

通俗的說,二者之前最大的不同就是它們的賦值方式。深拷貝的賦值方式就是值賦值,淺拷貝的賦值方式就是物件賦值。下面具體寫兩個例子來使你更加易懂。

//深拷貝

let a = 5;

let b = a;

b = 10;

console.log(a);//輸出a = 5

console.log(b);//輸出b = 10

//a和b的值是各自的,互相並沒有影響。

//淺拷貝

const obj1 = ;

const obj2 = obj1;

obj2.b = 1;

console.log(obj1);//輸出,b的值被修改

console.log(obj2);//輸出

//obj1給obj2賦值,只是它倆名字不同,但是由於是賦值關係,內容卻是相同的,所以說obj1和obj2根本就是同乙個物件,修改其中的乙個物件內容,另乙個也會被修改,這就是淺拷貝。

javascript中的深拷貝和淺拷貝?

一 jquery的 extend 淺拷貝與深拷貝 extend deep target,object1 objectn deep 型別 boolean 如果是true,合併成為遞迴 又叫做深拷貝 target 型別 object object1 型別 object 乙個物件,它包含額外的屬性合併到第...

javascript中的深拷貝和淺拷貝

一 遇到的問題 寫了以下的一段js var a a,b,c var c a c.push d 然後console.log a 會發現a中也多了d 二 查詢資料並找到原因 因為在js中,物件和陣列都是引用傳遞,所謂引用傳遞就是當變數c賦值為陣列a後,a和c便指向了同乙個位址,這個位址的值便是 a,b,...

javascript中的深拷貝和淺拷貝

前拷貝 var obj var obj1 for var i in obj console.log obj1 深拷貝 var obj 封裝深拷貝 function deepcopy obj,obj1 else 在利用遞迴處理 複雜型別陣列 deepcopy obj key obj1 key var ...