如何实现深拷贝
- 第一种:只适用于符合JSON格式的对象
function deepClone(obj){
return JSON.parse(JSON.stringify(obj))
}
- 使用递归的深拷贝,兼容性强一点,Object.hasOwnProperty会忽略原型上的属性
function deepClone(obj){
if(typeof obj !== "object") return;
let tempObj = obj instanceof Array?[]:{}
for(let k in obj){
if(obj.hasOwnProperty(k)){
tempObj[k] = typeof obj[k] === 'object'?deepClone(obj[k]):obj[k]
}
}
return tempObj
}
//由于typeof null返回的也是'object',遇到null时会处理成一个空对象