深拷贝的两种方式
-
JSON.parse(JSON.stringify(arr))
弊端:无法拷贝NaN,undefined,Symbol数据类型 -
根据子项类型做判断
function deepCopy(newObj,oldObj){
//1.先循环对象
for(let k in oldObj){
//2.先判断子项是否属于数组(这一步一定要放在Object之前判断,因为数组类型也是Object)
if(oldObj[k] instanceof Array){
newObj[k] = []
deepCopy(newObj[k],oldObj[k])
//3.再判断子项是否属于对象
}else if(oldObj[k] instanceof Object){
newObj[k] = {}
deepCopy(newObj[k],oldObj[k])
}else {
//4.简单数据类型直接赋值
newObj[k] = oldObj[k]
}
}
}