对引用数据类型进行深拷贝时,会在堆内存中重新分配空间存储分复制的数据,栈内存中的指针分别指向两个不同的堆内存变量,两个变量互不干扰,下面通过递归实现深拷贝:
const deepClone=(obj)=>{
if(!typeof obj)return obj; //判断是否为基本数据类型
let res=Array.isArray(obj)?[]:{}; //初始化
for(let key in obj){
if(obj.hasOwnProperty(key)){
if(obj[key]&&typeof obj[key]!='object') res[key]=obj[key]
else res[key]=deepClone(obj[key]) //递归
}
}
return res
}