对于内存模型的复制,通常有以下几种常见的方法:
1. 浅拷贝(Shallow Copy):
- 创建一个新的对象或数组,并将原对象的引用赋值给新对象。
- 新旧对象共享相同的引用,修改新对象会影响旧对象。
- 常见的浅拷贝方法包括 `Object.assign()`、扩展运算符 `{ ...obj }`、`Array.slice()`等。
2. 深拷贝(Deep Copy):
- 创建一个新的对象或数组,并递归地复制原对象的所有层级属性。
- 新旧对象完全独立,互不影响。
- 常见的深拷贝方法包括 `JSON.parse(JSON.stringify(obj))`、使用递归遍历复制、第三方库如 Lodash 的 `cloneDeep()`等。
3. 结构化克隆(Structured Clone):
- 使用 HTML5 中的 `structuredClone()` 方法进行复制。
- 可以复制 DOM 元素、Blob、File、ArrayBuffer 等更多类型的数据。
- 效率更高,且能够深度复制引用类型的数据。
选择合适的复制方式取决于具体的使用场景和需求。通常情况下,浅拷贝适用于普通的对象和数组复制,而深拷贝适用于需要完全独立的复制对象的场景。结构化克隆则是一种更强大和高效的复制方式。