思路
先判断是否为引用类型,不是则直接返回
再判断是数组还是对象
递归
/**
* 深拷贝
* @param {Object} obj 要拷贝的对象
*/
deepClone(obj = {}){
if(typeof obj !== 'object' || obj == null){
//obj 是 null 或者不是对象和数组,直接返回
return obj
}
let result
//判断是数组还是对象
if(obj instanceof Array){
result = []
}else{
result = {}
}
for(let key in obj){
if(obj.hasOwnProperty(key)){//保证key不是原型的属性
//递归
result[key] = this.deepClone(obj[key])
}
}
//返回结果
return result
},