简易版
简易版适用于绝大多数场景的深拷贝,不适用的情况详见如下手册
JSON.stringify()
JSON.parse()
let obj1 = {
  a: 1,
  b: 2,
  c: {
    d: 3
  }
}
let obj2 = JSON.parse(JSON.stringify(obj1))
obj2.a = 'a'
obj2.c.d = 4
console.log(obj1) // { a: 1, b: 2, c: { d: 3 } }
console.log(obj2) // { a: 'a', b: 2, c: { d: 4 } }
手动实现一个深拷贝方法
function deepCopy(target) {
  if (typeof target !== 'object' || target === null) {
    return target
  }
  const copy = Array.isArray(target) ? [] : {}
  for (const key in target) {
    if (Object.hasOwnProperty.call(target, key)) {
      copy[key] = deepCopy(target[key])
    }
  }
  return copy
}
let obj1 = {
  a: 1,
  b: 2,
  c: {
    d: 3
  }
}
let obj2 = deepCopy(obj1)
obj2.a = 'a'
obj2.c.d = 4
console.log(obj1) // { a: 1, b: 2, c: { d: 3 } }
console.log(obj2) // { a: 'a', b: 2, c: { d: 4 } }
手动实现一个完整的深拷贝方法
待更新。。。
												
																	
评论
还没有任何评论,你来说两句吧!