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

为何Person.prototype与Object.getPrototypeOf(Person)不等,与实例却相等?

问题解答

要搞懂这两个比较结果的差异,核心是区分构造函数的prototype属性和**对象的内部原型([[Prototype]])**这两个完全不同的概念:

1. 为什么Person.prototype === Object.getPrototypeOf(person1)返回true

当你用new Person()创建person1实例时,JavaScript会自动完成一个关键操作:把person1的内部原型[[Prototype]]直接指向构造函数Person的prototype属性。

Object.getPrototypeOf(person1)的作用就是读取person1的内部原型,所以它获取到的对象和Person.prototype是同一个,两者比较自然返回true。

2. 为什么Person.prototype === Object.getPrototypeOf(Person)返回false

Person本身是一个函数对象——在JavaScript里,所有自定义函数都是Function构造函数的实例。所以Person的内部原型[[Prototype]]指向的是Function.prototype,而不是它自己的Person.prototype。

你可以通过下面的代码验证这一点:

Object.getPrototypeOf(Person) === Function.prototype // 返回true

Person.prototype是专门给实例共享属性、方法的对象,和Person这个函数自己的原型(Function.prototype)是完全独立的两个对象,所以两者比较的结果是false。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 10:40:54