JS 深拷貝與淺拷貝

2021-09-19 13:32:28 字數 727 閱讀 1416

參考學習:

在有指標的情況下,淺拷貝只是增加了乙個指標指向已經存在的記憶體,而深拷貝就是增加乙個指標並且申請乙個新的記憶體,使這個增加的指標指向這個新的記憶體。

深拷貝:

陣列:

法一:for迴圈

let arr1 = [1,2,3];

let arr2 = copyarr(arr1);

function copyarr(arr);

let obj2 = copyobj(obj);

for(let key in obj)

return res;

}

法二:利用json

let obj1=;

let obj2 = json.parse(json.stringify(obj1));**

法三:擴充套件運算子

let obj1=;

let = obj1;

可以實現陣列和物件的深拷貝

function deepcopy(obj);  

if(obj && typeof obj === 'object')else}}

}return result;

}

我們還可以借用jq的extend方法。

注意:es6新增了object.assign() 方法

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