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