如何精确复制 JavaScript 对象
JavaScript 的内置方法无法保证对象的精确复制。这是由于原型派生属性和隐藏属性的存在,这可能会导致克隆时出现不可预见的结果。为了解决这个问题,人们开发了各种方法。
2022 更新:结构化克隆
名为结构化克隆的新 JS 标准提供了一个简单的解决方案。它受到许多现代浏览器的支持,并允许使用以下语法进行精确复制:
const clone = structuredClone(object);
传统方法
在以前版本的 JavaScript 中,自定义克隆函数可以通过以下步骤实现:
下面提供了解决这些挑战的克隆函数示例:
function clone(obj) { if (null == obj || "object" != typeof obj) return obj; // Handing different object types // ... implementation for Date, Array, and Object // Generic fallback: deep copy properties var copy = {}; for (var attr in obj) { if (obj.hasOwnProperty(attr)) copy[attr] = clone(obj[attr]); } return copy; }
该函数假设对象形成树结构并且不包含任何循环参考。处理循环结构需要更复杂的方法。
以上是如何完美克隆JavaScript对象?的详细内容。更多信息请关注PHP中文网其他相关文章!