1
Amy 原创整理|资料核验:2026-10-30
MDN说明,structuredClone可深复制支持的值,并支持循环引用;但如果指定transfer,可转移对象的资源会从原对象分离,原处无法继续使用。复制与转移是两种不同操作。
教学示例(虚构数据):const original = {items: ['A']}; const copied = structuredClone(original); copied.items.push('B'); 原对象的items仍只有'A'。这适用于该例中可结构化复制的数据,不代表任意对象都能复制;不支持的输入可能抛出DataCloneError。
Amy建议:默认先明确是否只需要独立副本。处理ArrayBuffer等资源时,只有确认后续代码不再使用原资源,才考虑transfer,并检查转移后的引用,避免把性能优化变成数据意外失效。
官方来源:
https://developer.mozilla.org/en-US/docs/Web/API/Window/structuredClone