递归深拷贝(手写系列)

214 阅读1分钟

手写

//递归深拷贝
const deepCopy=(arr)=>{
    let newArr = Array.isArray(arr) ? [] : {}
    Object.keys(arr).forEach(res=>{
        newArr[res] = arr[res] instanceof Object ? deepCopy(arr[res]) : arr[res]
    })
    return newArr
}

简要回答

  • 浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存
  • 深拷贝会另外创造一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象