You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

structuredClone在Chrome/Edge触发Illegal invocation,NodeJS正常,该行为是否符合预期?

这种差异行为是否属于预期情况?

是的,这属于预期行为,根源在于浏览器和Node.js环境对structuredClone的实现机制不同:

  • 在Chrome/Edge等浏览器中,structuredClone是绑定到全局对象(如window)的方法,它的执行依赖正确的this指向。当你直接将它赋值给自定义对象的clone属性并调用时,函数的this会指向这个自定义对象,不符合浏览器端structuredClone的预期上下文,因此抛出Uncaught TypeError: Illegal invocation错误。
  • 在Node.js v20环境中,structuredClone被设计为不依赖this的普通全局函数,无论调用上下文是什么,都能正常执行,所以不会报错。

问题复现代码

({ clone: structuredClone }).clone(1);

解决方案代码

方案一:使用箭头函数绑定正确的调用上下文

({ clone: (v) => structuredClone(v) }).clone(1);

方案二:使用普通函数显式调用structuredClone

({ clone: function(v) { return structuredClone(v)} }).clone(1);

内容的提问来源于stack exchange,提问作者DiscreteTom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 14:45:56