Object.prototype 是所有普通对象原型链的终点和顶层原型,其[[Prototype]]为null;它提供toString()等通用方法,且自身是Object构造函数的prototype属性值。

JavaScript 中 Object 对象的原型链,是所有普通对象继承关系的起点和终点——它既是“源头”,也是“归宿”。
Object.prototype 是所有对象的顶层原型
每个通过字面量 {}、new Object() 或其他构造函数(如 Array、Date)创建的对象,其原型链最终都会到达 Object.prototype。这个对象本身没有父级原型,它的 [[Prototype]] 为 null,标志着原型链终止。
-
{}的原型链:{} → Object.prototype → null -
[]的原型链:[] → Array.prototype → Object.prototype → null -
function() {}的原型链:fn → Function.prototype → Object.prototype → null
Object.prototype 提供了通用方法
像 toString()、valueOf()、hasOwnProperty()、isPrototypeOf() 这些方法,并不是每个对象自己定义的,而是从 Object.prototype 继承而来。只要没被覆盖,所有对象都能直接调用它们。
- 例如:
{}.toString()实际执行的是Object.prototype.toString - 即使你写
const obj = { toString() { return 'custom'; } },也只覆盖了自身属性,不影响原型上的原始行为逻辑
Object 构造函数本身也有原型链
注意区分:Object 是一个函数,所以它既是构造函数,也是对象。它自己的 [[Prototype]] 指向 Function.prototype,而 Function.prototype 的 [[Prototype]] 又指向 Object.prototype。
-
Object.__proto__ === Function.prototype✔️ -
Function.prototype.__proto__ === Object.prototype✔️ -
Object.prototype.__proto__ === null✔️
不要混淆 Object.prototype 和 Object 的 prototype 属性
Object.prototype 是实例对象的顶层原型;而 Object.prototype 本身是 Object 构造函数的 prototype 属性所指向的对象。换句话说:
-
Object.prototype是“谁的原型?”——它是所有普通对象的直接或间接原型 -
Object.prototype是“谁的 prototype?”——它是Object构造函数的prototype属性值 -
Object函数的constructor属性在Object.prototype上,即Object.prototype.constructor === Object
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











