JS 複雜型別的深拷貝與淺拷貝

2021-10-24 17:07:07 字數 1027 閱讀 6096

淺拷貝:淺拷貝就相當於複製複雜型別的乙個指標(引用),當修改這個物件時,另外乙個物件也會跟著改變。例如:let a = ; b = a; 此時修改a的屬性時,b也會隨之改變。

let obj=

;let obj2 = obj;

深拷貝:深拷貝就是把這個物件完完全全的拷貝過來,他們之間再也沒有任何關係。此時在修改這個物件,完全不會影響另乙個物件,因為他們指向了不同的指標(引用)。

let obj =};

function

shen

(e);

for(

const key in e)

return obj2;

}let obj2 =

shen

(obj)

obj.obj2.name =

'李四'

如果物件裡面有方法也沒問題

let obj =

, obj2:};

function

shen

(e);

for(

const key in e)

return obj2;

}let obj2 =

shen

(obj)

obj.obj2.name =

'李四'

js深拷貝與淺拷貝

1 基礎知識 基本型別與引用型別 js中可以把變數分成兩部分,基本型別和引用型別。基本型別包括 undefined null boolean number和string 引用型別值可能由多個值構成的物件。在對基礎型別資料進行拷貝時,實際相當於建立新的相同資料 hello 賦值給b var a hel...

js 淺拷貝與深拷貝

js 有兩種資料型別,基礎資料型別和引用資料型別 基礎資料型別都是按值訪問的,我們可以直接操作儲存在變數中的實際的值。而引用型別如array,1.淺拷貝 只複製指向某個物件的指標,而不複製物件本身,新舊物件共享一塊記憶體 淺拷貝是指只複製一層物件,當物件的屬性是引用型別時,實質複製的是其引用,當引用...

js深拷貝與淺拷貝

實現乙個頁面或者乙個功能時,常常遇到的場景需要我們備份乙個陣列或者物件,這時候出現了深拷貝與淺拷貝效果截然不同呀總結如下 var arr 1,2,3,4 shallowarr arr arr 0 change console.log arr console.log shallowarr change...