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

为何f.__proto__ instanceof Function返回false?JavaScript原型疑问

为什么f.__proto__ instanceof Function返回false?

你对instanceof的核心逻辑理解是对的:A instanceof B本质是检查B.prototype是否存在于A的整条原型链上,但这里你忽略了JavaScript里一个特殊的对象特性——Function.prototype本身并不是Function的实例。

我们一步步拆解你的代码:

  • 首先,f是一个普通函数,所以f.__proto__直接指向Function.prototype,这也是第一个console.log返回true的原因。
  • 当你执行f.__proto__ instanceof Function时,其实等价于判断Function.prototype instanceof Function。
  • 按照instanceof的规则,我们需要验证:右侧Function的原型(也就是Function.prototype)是否出现在左侧对象(还是Function.prototype)的原型链上?

现在看Function.prototype的完整原型链:
Function.prototype → Object.prototype → null

很明显,Function.prototype并没有出现在自己的原型链里,所以这个判断自然返回false。

额外补充个小知识点:虽然typeof Function.prototype会返回"function"(它是一个特殊的函数对象),但它并不是通过new Function()创建的,因此它的原型链不会指向自身——这也是它和普通函数实例的核心区别:普通函数实例的__proto__是Function.prototype,而Function.prototype的__proto__是Object.prototype。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:35:32