js基础之手写实现深拷贝

42 阅读1分钟

对引用数据类型进行深拷贝时,会在堆内存中重新分配空间存储分复制的数据,栈内存中的指针分别指向两个不同的堆内存变量,两个变量互不干扰,下面通过递归实现深拷贝:

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
}