浅拷贝和深拷贝

49 阅读1分钟

浅拷贝和深拷贝

区别

  • 浅拷贝: 只复制指向某个对象的指针,不复制对象本身,新旧对象共享一块内存
  • 深拷贝:复制并创建一个一模一样的对象,不会共享内存

实现浅拷贝


object.assign( target_obj, origin_obj)

const new_obj = { ...origin_obj }

实现深拷贝

简单递归实现

function deep_clone( obj ){
  if( typeof obj !== 'object') return obj

  let new_obj = obj instanceof Array ? [] : {}
  for(let key in obj){
    new_obj[key] = deep_clone(obj[key])
  }

  return new_obj
}

JSON实现

const new_obj = JSON.parse(JSON.stringify(obj))

loadsh函数库

_.cloneDeep(obj)