object.__proto__ 指向 function.prototype,因为 object 是函数对象、由 function 构造;object.prototype 是普通对象的原型终点,其 proto 为 null。

Object.__proto__ 指向 Function.prototype,不是 Object.prototype。这是容易混淆的关键点——因为 Object 本身是一个函数(构造函数),而所有函数都是 Function 的实例。
为什么 Object.__proto__ 是 Function.prototype?
在 JavaScript 中,函数是“可调用的对象”,所以函数本身也有原型链。Object 作为内置构造函数,它的类型是 "function":
typeof Object === "function"- 因此,
Object是由Function构造出来的,即Object instanceof Function === true - 按原型链规则:实例的
__proto__指向其构造函数的prototype→ 所以Object.__proto__ === Function.prototype
那 Object.prototype 又是什么?
Object.prototype 是所有普通对象的原型链终点,但它和 Object.__proto__ 是两个完全不同的东西:
Java开发手册规约集合,基于阿里巴巴Java开发手册(嵩山版)。 涵盖7大维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约。 当用户需要:(1) 编写或审查Java代码 (2) 检查命名/代码规范 (3) 处理异常和日志 (4) 编写单元测试 (5) 安全编码 (6) 数据库设...
-
Object.prototype是Object函数身上的prototype属性,它是一个普通对象,供new Object()或字面量{}创建的实例继承 -
Object.prototype.__proto__ === null,它是整条原型链的终止点 - 而
Object.__proto__是Object这个函数对象自身的原型,即它作为“函数”所继承的方法(如call、bind)来源
可以验证的控制台操作
直接在浏览器或 Node.js 环境中运行这几行,就能看清结构:
Object.__proto__ === Function.prototype // trueFunction.prototype.__proto__ === Object.prototype // trueObject.prototype.__proto__ === null // true({}).__proto__ === Object.prototype // true
底层逻辑一句话说清
JavaScript 中每个值都有归属:函数对象归 Function 管,所以它的 __proto__ 指向 Function.prototype;而普通对象(包括 Object.prototype 这个对象本身)归 Object 管,所以它们的 __proto__ 最终都连到 Object.prototype,再往上就是 null。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










