遞迴方式實現深拷貝

2021-09-30 01:46:17 字數 443 閱讀 6008

通常json.parse(json.stringify())的方式進行深拷貝是不可以拷貝undefined、function、regexp等型別。

遞迴拷貝可以解決此類問題:

// 定義乙個深拷貝函式  接收目標target引數

function deepclone(target)

// 判斷如果當前的值是null的話;直接賦值為null

} else if (target === null) else if (target.constructor === regexp) else ;

for (let i in target)

}// 如果不是物件的話,就是基本資料型別,那麼直接賦值

} else

// 返回最終結果

return result;

}

JS深拷貝遞迴實現

方法1.要提前宣告乙個物件 var a arr 1,2,3 say function null var b 遞迴賦值 function deepcopy a,b js的每個物件constructor指向它的建構函式 deepcopy a item b item else deepcopy a,b 方...

JS淺拷貝與深拷貝實現方式

js淺拷貝與深拷貝只針對的是陣列 array 和物件 object 兩種引用資料型別。引用型別的資料在記憶體中分兩部分儲存,分別是儲存在棧中的引用位址和儲存在堆中的資料。淺拷貝其實拷貝的是引用型別資料的位址,兩個物件共享堆中的資料,乙個物件改變了某個屬性值,另乙個物件的屬性值也會跟著改變。而深拷貝則...

js遞迴深拷貝

深拷貝和淺拷貝的區別 淺拷貝 就是簡單的複製,用等號即可完成 let a let b a這就完成了乙個淺拷貝 但是當修改物件b的時候,我們發現物件a的值也被改變了 b.a 10 console.log a.a 10這是因為淺拷貝只複製了指向物件的指標,新舊物件共用同一塊記憶體,修改某乙個物件的同時也...