浅拷贝
浅拷贝会创建一个新对象,然后将原始对象的基本数据类型的属性复制到新对象中。对于引用数据类型(如对象或数组),浅拷贝仅复制引用,而不复制引用的对象本身。新对象与原对象共享相同的引用对象。如果修改新对象的引用对象,原对象也会受到影响,因为它们引用同一个内存地址。
常用方法
- Object.assign({}, obj)
- Object.create(obj)
- Array.prototype.concat()
- Array.prototype.slice()
- 扩展运算符[...obj] 或 [...arr]
深拷贝
深拷贝创建一个完全独立的新对象,同时递归复制所有的引用类型的属性,使得新对象和原对象的所有嵌套对象也完全独立。新对象的修改不会影响原对象,因为它们引用的是不同的内存地址。
常用方法
- JSON.parse(JSON.stringify(obj))
- 自定义递归函数实现深度复制
- 结构化克隆算法 structuredClone(obj)
具体详解方法和概念还需了解,实际开发中,偶有因此导致的一些问题,所以在开发中要有这个概念,注意数据的深拷贝和浅拷贝问题,自己浅显记录一下。