let obj1={
name:'DL',
age:20,
school:{
name:"清华"
}
}
//定义深拷贝函数
function deepClone(obj={}){
//首先判断obj是不是对象
if(typeof(obj)!=='object' || obj==null){
return obj;
}
//再去判断obj是数组还是对象
let result
if(obj instanceof Array){
result=[];
}else{
result={};
}
//递归赋值
for(let key in obj){
//很重要的一步
if(obj.hasOwnProperty(key)){
result[key]=deepClone(obj[key])
}
}
return result;
}
let obj2=deepClone(obj)
obj2.school.name="北大"
console.log(obj1.school.name)//"清华”
console.log(obj2.school.name)//"北大”
js深拷贝
于 2022-11-08 14:42:16 首次发布