前端深拷貝與淺拷貝

2021-10-12 12:49:41 字數 1104 閱讀 2310

前端深拷貝與淺拷貝

1.淺拷貝

var obj1 =

var obj2 = obj1;

obj2.a =5;

console.

log(obj1.a)

;// 5

console.

log(obj2.a)

;// 5

2.深拷貝(只能拷貝一層)

var obj1 =

var obj2 = object.

assign

(, obj1)

; obj2.c[1]

=5; console.

log(obj1.c)

;// ["a", 5, "c"]

console.

log(obj2.c)

;// ["a", 5, "c"]

3.深拷貝

// 定義乙個深拷貝函式  接收目標target引數

function

deepclone

(target)

// 判斷如果當前的值是null的話;直接賦值為null

}else

if(target ===

null

)else

if(target.constructor === regexp)

else

;for

(let i in target)

}// 如果不是物件的話,就是基本資料型別,那麼直接賦值

}else

// 返回最終結果

return result;

}// 物件obj1

let obj1 =

, b:

function()

, c:[,

'a',3]

}// 物件obj2

let obj2 =

deepclone

(obj1)

; console.

log(obj2)

;

前端的深拷貝和淺拷貝 深拷貝與淺拷貝的區別

淺拷貝的方式 淺拷貝1 var obj var newobj obj newobj.name 李四 console.log obj console.log newobj 淺拷貝2 object.assgin 引數1 目標物件 引數2 任意多個物件 如果物件是多層的話 var obj var obj1...

「淺拷貝」與「深拷貝」

c 中物件的複製就如同 轉殖 用乙個已有的物件快速地複製出多個完全相同的物件。一般而言,以下三種情況都會使用到物件的複製 1 建立乙個新物件,並用另乙個同類的已有物件對新物件進行初始化,例如 cpp view plain copy class rect rect rect1 rect rect2 r...

淺拷貝與深拷貝

淺拷貝 1 2 myclass a,b a b 為了封裝性和解耦,同型別的兩個物件之間進行賦值操作時,所有成員變數被複製,包括私有成員 指標變數。類的成員函式在傳遞或返回物件時都會進行物件複製產生臨時物件,比如函式呼叫時實參變為形參,以及函式返回物件。考慮到效能和使用者要求不同,編譯器不複製物件內部...