js 淺拷貝與深拷貝和方法

2021-10-23 21:53:23 字數 826 閱讀 6598

淺拷貝只複製指向某個物件的指標,而不複製物件本身,新舊物件還是共享同一塊記憶體。但深拷貝會另外創造乙個一模一樣的物件,新物件跟原物件不共享記憶體,修改新物件不會改到原物件。

淺拷貝是建立乙個新物件,這個物件有著原始物件屬性值的乙份精確拷貝。如果屬性是基本型別(undefined,boolean,number,string,null),拷貝的就是基本型別的值,如果屬性是引用型別(object),拷貝的就是記憶體位址 ,所以如果其中乙個物件改變了這個位址,就會影響到另乙個物件。

1.『=』賦值。

2.object.assign()

深拷貝是將乙個物件從記憶體中完整的拷貝乙份出來,從堆記憶體中開闢乙個新的區域存放新物件,且修改新物件不會影響原物件。

1.json序列化

arr =

json

.parse

(json

.stringify

(arr)

)

2.深層遞迴

function

deepclone

(obj)

return t;

}var tt =

var tt2 =

deepclone

(tt)

tt2.a =

3console.

log(tt.a)

//1console.

log(tt2.a)

//3

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...