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

为何使用structuredClone()复制对象后与原对象深层严格不相等?

问题原因解析

首先,structuredClone() 复制自定义类实例时,会丢失原对象的原型链信息,把自定义实例转换成普通的 JavaScript 对象。

看你的代码:

  • obj.key 是 new A() 创建的实例,它的原型指向 A.prototype,属于自定义类型 A 的实例。
  • 经过 structuredClone() 复制后,copy.key 会变成一个和原实例属性完全相同的普通对象,但它的原型是 Object.prototype,不再是 A 的实例。

而 util.isDeepStrictEqual() 做深层严格比较时,会检查两个对象的原型是否一致。因为 obj.key 和 copy.key 的原型链不同,所以整个对象的深层严格相等判断返回 false。

你可以自己验证这一点:

console.log(obj.key instanceof A); // 输出 true
console.log(copy.key instanceof A); // 输出 false
console.log(Object.getPrototypeOf(obj.key) === A.prototype); // true
console.log(Object.getPrototypeOf(copy.key) === A.prototype); // false

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 12:52:33