两种深拷贝的实现

177 阅读1分钟

如何实现深拷贝

  1. 第一种:只适用于符合JSON格式的对象
function deepClone(obj){
	return JSON.parse(JSON.stringify(obj))
}
  1. 使用递归的深拷贝,兼容性强一点,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时会处理成一个空对象