Skip to content

如何在 JavaScript 中高效地深度克隆对象

Posted on:2023年10月16日 at 18:27

深度克隆对象是指创建一个对象的完全副本,包括其所有嵌套对象和数组。深度克隆对象在许多情况下都很有用,例如,当您需要修改对象而不影响原始对象时。

最高效的深度克隆对象方法

目前,最高效的深度克隆对象方法是使用 JavaScript 的内置 structuredClone() 函数。该函数可以克隆所有类型的对象,包括复杂类型和循环引用。

const obj = {
  name: "RXX",
  age: 2,
  hobbies: ["programming", "writing", "reading"],
};

const clone = structuredClone(obj);

console.log(clone === obj); // false
console.log(clone.name); // RXX
console.log(clone.age); // 2
console.log(clone.hobbies); // ['programming', 'writing', 'reading']

在 JavaScript 中,还有几种深度克隆对象的方法。最简单的方法是使用 JSON.parse()JSON.stringify() 函数。这两个函数可以将对象转换为 JSON 字符串,然后将其转换回对象。但是,这种方法会丢失一些复杂类型,例如 DateRegExpfunction

另一种方法是使用递归函数来遍历对象并克隆其所有属性。这种方法可以克隆所有类型的对象,但效率较低。

还有一些第三方库提供了深度克隆对象的功能。例如,lodash 库的 cloneDeep() 函数可以高效地深度克隆对象。