JavaScript原型链终点是Object.prototype,因其[[Prototype]]为null;所有对象最终都通过原型链连接至此,它不继承任何对象,是整个链的根。

JavaScript 中原型链的终点就是 Object.prototype,它的 [[Prototype]] 内部属性值为 null。追溯到它,就到了链的尽头。
为什么 Object.prototype 是终点
所有普通对象、数组、函数等,最终都会通过原型链连接到 Object.prototype。它的特殊性在于:
-
Object.prototype.__proto__ === null(浏览器环境可验证) -
Object.getPrototypeOf(Object.prototype) === null(标准推荐写法) - 它是整个原型链的“根”,不继承自任何其他对象
如何手动追溯到终点
你可以从任意对象出发,逐级向上取其原型,直到返回 null:
function traceProto(obj) {
let current = obj;
while (current !== null) {
console.log(current);
current = Object.getPrototypeOf(current);
}
}
traceProto({}); // 输出: {}, Object.prototype, null
注意:不要用 obj.__proto__,它已被标记为废弃;始终优先使用 Object.getPrototypeOf()。
验证是否到达终点的小技巧
两种常用判断方式:
-
Object.getPrototypeOf(obj) === null→ 表示obj就是终点(即Object.prototype) -
Object.prototype.isPrototypeOf(obj)→ 返回true说明Object.prototype在obj的原型链上(但不一定是直接原型)
常见对象的原型链路径示例
以一个普通对象为例:
-
{}→Object.prototype→null -
[1, 2]→Array.prototype→Object.prototype→null -
function() {}→Function.prototype→Object.prototype→null
你会发现,无论起点是什么,最后都汇入 Object.prototype,再下一步就是 null。


















