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

为什么两个逻辑相同的JavaScript函数new构造出的实例不相等?

原因说明

在JavaScript中,== 运算符对引用类型的比较规则是判断二者是否指向堆内存中的同一个实例,对比的是内存地址,而非实例的内容或其构造函数的实现逻辑。
出现该结果的核心原因如下:

  • 你定义的A和B本身就是两个完全独立的构造函数,哪怕内部实现逻辑完全一致,二者也是不同的函数对象,内存地址互不相同。
  • 每次执行new操作调用构造函数时,都会在堆内存中开辟一块全新的存储空间生成新的实例,返回的是该新实例的内存引用。你分别执行了new A()和new B()两次独立的new操作,生成的a和b是两个完全独立的实例,存储在不同的内存地址中。

因此两个引用地址不相等,a == b的结果自然为false。即使你使用同一个构造函数执行两次new操作,比如new A() == new A(),返回结果同样是false,因为两次生成的是不同的实例。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:24:05