深拷贝和浅拷贝

63 阅读1分钟
浅拷贝

浅拷贝会创建一个新对象,然后将原始对象的基本数据类型的属性复制到新对象中。对于引用数据类型(如对象或数组),浅拷贝仅复制引用,而不复制引用的对象本身。新对象与原对象共享相同的引用对象。如果修改新对象的引用对象,原对象也会受到影响,因为它们引用同一个内存地址。

常用方法
  • Object.assign({}, obj)
  • Object.create(obj)
  • Array.prototype.concat()
  • Array.prototype.slice()
  • 扩展运算符[...obj] 或 [...arr]
深拷贝

深拷贝创建一个完全独立的新对象,同时递归复制所有的引用类型的属性,使得新对象和原对象的所有嵌套对象也完全独立。新对象的修改不会影响原对象,因为它们引用的是不同的内存地址。

常用方法
  • JSON.parse(JSON.stringify(obj))
  • 自定义递归函数实现深度复制
  • 结构化克隆算法 structuredClone(obj)

具体详解方法和概念还需了解,实际开发中,偶有因此导致的一些问题,所以在开发中要有这个概念,注意数据的深拷贝和浅拷贝问题,自己浅显记录一下。