let oldObj = { id:1, name:'马冬梅' , msg:{ age:18 } }
let newObj = {}
deepCopy(newObj , oldObj){
for(let k in oldObj){
let item = oldObj[k];
// 判断是数组? 对象? 简单类型
if(item instanceof Array){
newObj[k] = []
deepCopy(newObj[k],item)
}else if(item instanceof Object){
newObj[k] = {}
deepCopy(newObj[k],item)
}else{
// 基础类型 直接赋值
newObj[k] = item
}
}
}
deepCopy(newObj,oldObj)
console.log(newObj) // { id:1, name:'马冬梅' , msg:{ age:18 } }
newObj.name = '我改名字了'
sonsole.log(newObj) // { id:1, name:'我不叫马冬梅' , msg:{ age:18 } }
console.log(oldObj) //{ id:1, name:'马冬梅' , msg:{ age:18 } }
手写深拷贝
于 2022-01-19 14:01:18 首次发布