我们对 obj 进行赋值的时候 都是 赋值的是 地址的引用,当我们修改一个值的时候 都会受影响,那么我们可以通过 检查类型 和递归的形式 对地址进行深拷贝 在进行赋值的时候,就不会对之前的代码有影响了
let obj = {
name: '小崔',
age: 18,
childName :{
name: '小磊'
}
}
function deepCopy(obj = {}){
if(typeof obj !== 'object' || obj == null){
return obj
}
let result
if(obj instanceof Array){
result = []
}else{
result = {}
}
for(let key in obj){
if(obj.hasOwnProperty(key)){
result[key] = deepCopy(obj[key])
}
}
return result
}
obj.name // '小崔'
let obj2 = deepCopy(obj)
obj2.name = 'hi'
obj2.name // 'hi'