浅拷贝与深拷贝

52 阅读1分钟

浅拷贝和深拷贝只是针对于引用数据类型而言

浅拷贝:

概念:浅拷贝只是复制指向某个对象的指针,而不复制对象本身,新旧对象其实还是同一个对象。修改时原对象也会受到影响。

方法:

  • 利用 = 赋值操作符实现浅拷贝。
  • 使用 slice、concat 是数组的浅拷贝。
  • 对象浅拷贝 - Object.assign()。
  • 对象浅拷贝 - 扩展运算符

深拷贝:

概念:深拷贝就是在拷贝数据的时候,将数据的所有引用结构都拷贝一份。简单的说就是,在内存中存在两个数据结构完全相同又相互独立的数据,将引用型类型进行复制,而不是只复制其引用关系。修改时原对象不再受到任何影响。

方法:

  • 利用 JSON 对象中的 parse 和 stringify---如果对象某个属性值是函数的话,这个函数的值不能被深拷贝
  • 利用递归来实现每一层都重新创建对象并赋值。
  • lodash