javascript原型链终点是object.prototype,其__proto__为null;用object.getprototypeof()递归调用至返回null即达终点;object.create(null)创建的对象例外,原型直接为null。

JavaScript 中原型链的终点是 Object.prototype,它的 __proto__ 值为 null。这是整个原型链真正终止的地方。
怎么确认原型链走到头了?
你可以用 Object.getPrototypeOf() 一层层向上查,直到返回 null:
-
Object.getPrototypeOf({})→Object.prototype -
Object.getPrototypeOf(Object.prototype)→null
一旦得到 null,就说明已到达终点。注意:__proto__ 是非标准但广泛支持的属性,推荐优先使用 Object.getPrototypeOf()。
所有普通对象最终都连到 Object.prototype 吗?
绝大多数是的,但有例外:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 通过
Object.create(null)创建的对象,其原型直接为null,不经过Object.prototype - 函数对象的原型链:函数实例 →
Function.prototype→Object.prototype→null - 数组、日期等内置对象也最终指向
Object.prototype,再往上就是null
为什么不是 Function.prototype 或 Array.prototype?
因为它们只是中间节点:
Function.prototype.__proto__ === Object.prototypeArray.prototype.__proto__ === Object.prototype-
Object.prototype.__proto__ === null(唯一一个直接指向null的内置原型)
所以无论从哪个对象出发,只要没被刻意断开(如 create(null)),最终都会落到 Object.prototype,然后戛然而止。
不复杂但容易忽略:终点不是“没有原型”,而是“原型为 null”——这个 null 就是引擎停止查找的信号。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










