實現乙個深拷貝

2021-10-23 21:22:26 字數 576 閱讀 4377

第一種 可以使用簡單的方法json

const person = 

const copyperson = json.parse(json.stringify(person))

修改person內name屬性:

person.name = 'che'

console.log(person) //

console.log(copyperson) //

可以看到從拷貝過來的copyperson不再受person的影響

但是json的方法會存在乙個弊端 就是無法拷貝型別為 function undefined 和es6新增的sysbol 他們會在拷貝過程中丟失。

第二種 遞迴實現
function deepcopy(obj)

// 開始迴圈

for(let i in obj)

}else

return newobj

} //使用時直接呼叫即可

const person =

const newperson= deepcopy(person)

如何深拷貝乙個物件陣列?

某個專案裡,存在乙個物件陣列,我用lodash的filter 函式,分別生成了 a b 兩個新的物件陣列,但我遍歷了 b 陣列,改造裡面的每乙個物件,沒想到引起 a 陣列的裡物件發生了變化,引發了錯誤。這是乙個基礎的,對引用型別 物件沒有使用深拷貝的問題,我疏忽了,特此記錄下。const requi...

實現深拷貝

通過遞迴 型別判斷 function deepclone obj 如果obj是正規表示式 instanceof原理 判斷當前元素的 proto 是否有regexp.prototype if obj instanceof regexp 如果obj是日期格式 if obj instanceof date...

AS3深拷貝的乙個測試總結

package import flash.utils.dictionary class testvalue 在這段 是我們as3中 常用的深拷貝 我做了這麼乙個小測試,得出幾個結論 1 發現如果 我們不進行registerclassalias 1111111 testvalue 這拷貝出來的類物件 ...