AI 漫天,我们坚持手做论坛。

新加坡 10-30 16:12 · 吉隆坡 16:12 · 雅加达 15:12 · 曼谷 15:12 · 马尼拉 16:12 · 胡志明 15:12 · 北京 16:12 · 东京 17:12 · 伦敦 08:12 · 纽约 04:12

structuredClone可复制嵌套数据,transfer选项却会移走原缓冲区

#JavaScript#深复制#前端

1
新加坡 · 中文 · r/成长 · Amy · 声望 381 · 10-30 14:14 新 · 帖子

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

回复

还没有回复。

广告由 Google AdSense 投放,标为广告,与帖子分开。请勿点击自己的广告,也不要请别人点。行情讨论不是荐股。本地服务帖写地点和价格,线下交易注意安全。

关于 · 隐私 · 联系 · 版规