一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

如何通过 图解原型链 彻底搞懂 Object 与 Function 的互为实例关系

时间:2026-06-04 10:12:56 编辑:袖梨 来源:一聚教程网

Object 和 Function 互为实例是原型链自然演化的结果:Object.__proto__ === Function.prototype,Function.__proto__ === Function.prototype,Object.prototype.__proto__ === null,三者构成闭环。

object 和 function 互为实例,不是循环悖论,而是原型链自然演化的结果。关键不在“谁先谁后”,而在它们的 __proto__ 指向constructor 关系 如何层层嵌套、最终收束于 null

Function 是所有函数的构造器,包括 Object

JavaScript 中,每个函数(含 ObjectArrayfunction foo(){})都是 Function 的实例:

  • typeof Object === 'function'Object 是函数对象
  • Object.__proto__ === Function.prototype → 它由 Function 构造
  • Function.__proto__ === Function.prototypeFunction 也构造自己(唯一自指函数)

Object 是所有普通对象的原型终点

Object.prototype 是绝大多数对象原型链的顶端,它的 __proto__null

  • {}.__proto__ === Object.prototype
  • new Date().__proto__ === Date.prototype,而 Date.prototype.__proto__ === Object.prototype
  • Object.prototype.__proto__ === null → 原型链在此终止

为什么 Object instanceof Function 为 true?

因为 instanceof 判断逻辑是:**沿着左操作数的 __proto__ 链,查找是否等于右操作数的 prototype**:

  • Object instanceof Function → 查 Object.__proto__(即 Function.prototype)是否等于 Function.prototype → ✅ 相等
  • Function instanceof Object → 查 Function.__proto__(即 Function.prototype),再查 Function.prototype.__proto__(即 Object.prototype),它等于 Object.prototype → ✅ 找到

图解核心三节点闭环

真正支撑互为实例的,是以下三个关键连接(可手绘三节点箭头图):

  • Function.prototype 是一个函数对象 → 它的 __proto__ 指向 Object.prototype
  • Object.prototype 是一个普通对象 → 它的 constructor 指向 Object(通过原型链继承)
  • Object 是函数 → 它的 prototype 是一个对象,该对象的 constructor 又指向 Object

这三者构成闭环:Function 构造 Object → Object 的原型是 Object.prototype → Object.prototype 的源头是 Function.prototype → Function.prototype 本身又是 Function 的实例。

热门栏目