8-浅拷贝和深拷贝

本文最后更新于:2021年7月24日 晚上

JS中对象的浅拷贝与深拷贝

概念

在JS中浅拷贝与深拷贝通常是指对对象的复制拷贝。

浅拷贝

只拷贝最外一层。如果属性是基本类型,则拷贝基本类型的值;如果有属性中有对象,则拷贝的是对象的引用。

简单地说就是:拷贝第一层的基本类型值,以及第一层的引用类型地址

基本数据类型和引用存放在栈内存中,引用中存放的是对象的地址。对象的值存放于堆内存中

深拷贝

在堆内存中申请一块新的空间,来拷贝对象所有层次的属性。得到的是属性完全相同的新对象,不会影响原对象。

实现

浅拷贝

  • Object.assign()
  • 扩展运算符

针对数组

  • concat()
  • slice()

深拷贝

当然。浅拷贝和深拷贝的处理这么常见的问题肯定已经有轮子了。lodash库里有相应的函数可以处理


参考

https://juejin.cn/post/6844903937426849799

https://juejin.cn/post/6906369563793817607

https://juejin.cn/post/6844904197595332622#heading-0


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!