js中物件的淺拷貝和深拷貝的區別

2022-08-21 05:33:08 字數 582 閱讀 9434

淺度拷貝:複製一層物件的屬性,並不包括物件裡面的為引用型別的資料,當改變拷貝的物件裡面的引用型別時,源物件也會改變。

資料的型別:

一般資料(值傳遞):字元,數值,布林,undefined

拷貝(複製)時,傳遞的是值,修改新資料,不會影響老資料

複雜資料(引用傳遞):物件

拷貝(複製)時,傳遞的是記憶體位址的指向,兩個變數指向乙個位址,修改新資料,會影響老資料

var a = 10;

function fn(a2)

fn(a)

console.log(a); //10

var obj = ;

function fn(obj2)

fn(obj)

console.log(obj) //name:root

var obj =

var obj2 = {};

for(var i in obj)

obj2.name = "root"

console.log(obj)//name:"admin"

console.log(obj2)//name:"root"

Js中物件的深拷貝和淺拷貝

淺拷貝 只拷貝物件的基礎屬性值,對屬性值為物件或陣列的屬性則拷貝指標。深拷貝 拷貝物件的所有屬性作為乙個全新的物件。拷貝前後的物件互不影響。淺拷貝僅僅是指向被複製的記憶體位址,如果原位址中物件被改變了,那麼 深拷貝出來的物件也會相應改變。一 物件引用 物件引用容易理解,直接賦值,修改複製後的陣列,原...

js物件的深拷貝和淺拷貝

淺拷貝 只是複製指向某個物件的指標,而不複製物件本身新舊物件,它們還是共享同一記憶體。深拷貝 會另選創造乙個一模一樣的物件,新物件和原物件不共享記憶體,修改新物件不會改到原物件。也就是老死不相往來了。知道了深淺拷貝的含義,那就來總結如何實現深淺拷貝。let data 第一種情況 let obj da...

js物件淺拷貝和深拷貝

1 淺拷貝 varobj 定義乙個物件 functioncopy obj 定義乙個空物件,用來儲存key和value for varkeyinobj returnnewobj 將新物件作為返回值,返回到外面 varobj2 copy obj 將obj複製給obj2 obj2.a 20 改變obj2中...