什么是深拷贝和浅拷贝,怎么理解?

1、浅拷贝 :只复制指向某个对象的指针,而不复制这个对象本身,新旧对象共享一块内存。

2、深拷贝 :复制并创建一个一模一样的对象,不共享内存,修改新对象旧对象不会变。

深拷贝方式:

1、递归(对可遍历的属性进行递归)

// 一般来说,在js中我们用JSON.parse(JSON.stringify(obj))来完成深拷贝,但是该方法不能解决属性为函数,undefined,循环引用的的情况,因此我们有时需要自己实现一个深拷贝。
function clone(o) {
 var temp = {}
 for (var key in o) {
  if (typeof o[key] === 'object' && o[key] !== null) {
      temp[key] = clone(o[key])
  } else {
      temp[key] = o[key]
  }
 }
 return temp
}

2、使用JSON对象的parse和stringify

浅拷贝方式:

1、Object.assign

2、(...) 扩展运算符

原文出处:
版权声明:本文来源地址若非本站均为转载,若侵害到您的权利,请及时联系我们,我们会在第一时间进行处理。