在 JavaScript 中,处理对象拷贝时,我们经常会遇到浅拷贝(shallow copy)和深拷贝(deep copy)的概念。浅拷贝只复制对象的第一层属性,如果属性值是引用类型(如对象、数组等),则只复制引用而不复制对象本身,这可能会导致原始数据被意外修改。而深拷贝则递归地复制对象及其所有子属性,确保原始数据和拷贝数据完全独立。
传统上,JavaScript 没有内置直接进行深拷贝的函数,开发者通常需要自己编写深拷贝函数或使用第三方库(如 lodash 的 _.cloneDeep())。然而,随着现代浏览器的发展,一个新的全局函数 structuredClone() 被引入,它提供了一种方便且高效的方式来执行深拷贝。
structuredClone() 函数的基本用法
structuredClone() 函数可以创建一个给定值的深拷贝。它不仅可以处理普通对象和数组,还能处理更多复杂的数据类型,如 Map、Set、Blob、File、ImageData、ArrayBuffer、TypedArrays、RegExp 对象以及日期和错误对象等。
语法
javascript
let clone = structuredClone(valueToClone