JS复制Object对象的几种方式以及性能对比
在 JavaScript 中,有多种方式可以复制一个对象。每种方法都有它们自己的优缺点,所以你应该根据你的应用程序的需要来选择适当的方法。 以下是几种复制 JavaScript 对象的方法,以及它们的性能对比: Object.assign() 使用 Object.assign() 方法:这是最简单的方法,可以使用它来浅复制一个对象。它将对象的所有可枚举属性复制到一个新的对象中。 const original = { a: "诚哥博客", b: "诚哥" }; const copy = Object.assign({}, original); console.log(Object.is(original, copy)); 优点:简单易用,可以很容易地浅复制一个对象。 缺点:它只能浅复制对象,如果对象中有嵌套的对象或数组,则它们的指针仍然是指向原始对象的。 JSON.parse() 和 JSON.stringify() 使用 JSON.parse() 和 JSON.stringify() 方法 这种方法可以深复制一个对象。它将对象转换为 JSON 字符串,然后再将其转换回对象。 const original = { a: "诚哥博客", b: "诚哥" }; const copy = JSON.parse(JSON.stringify(original)); console.log(Object.is(original, copy)); 优点:可以深复制对象,包括嵌套的对象和数组。 缺点:无法复制函数和原型链,并且性能较差。 使用自定义函数 可以自定义复制的方式。你可以使用递归的方式来遍历对象的所有属性,并根据需要进行复制。 例如,下面是一个简单的复制函数: function deepCopy(obj) { if (obj === null || typeof obj !== "object") { return obj; } let copy; if (obj instanceof Array) { copy = []; for (let i = 0; i < obj.length; i++) { copy[i] = deepCopy(obj[i]); } } else { copy = {}; for (const key in obj) { if (obj.hasOwnProperty(key)) { copy[key] = deepCopy(obj[key]); } } } return copy; } const original = { a: "诚哥博客", b: "诚哥", c: { d: "博客" } }; const copy = deepCopy(original); console.log(Object.is(original, copy)); ...