原型链的终点是 Object.prototype
。
在 JavaScript 中,所有对象的原型链最终都会归结到 Object.prototype
,这是原型链的最后一个环节。
原型链的结构
对象实例:每个 JavaScript 对象都有一个内部属性 [[Prototype]]
(在代码中通过 __proto__
或 Object.getPrototypeOf
可以访问),这个属性指向该对象的原型。
构造函数的原型:构造函数创建的对象实例的原型指向构造函数的 prototype
对象。例如:
function Person(name) {
this.name = name;
}
const john = new Person('John');
在这个例子中,john
的原型指向 Person.prototype
。
Object.prototype
:每个对象的原型链最终都会指向 Object.prototype
。这是 JavaScript 原型链的终点。Object.prototype
是所有对象的共同祖先,它提供了所有对象共有的属性和方法,如 toString
, hasOwnProperty
等。
null
:Object.prototype
的 [[Prototype]]
是 null
,这是原型链的终点。null
表示没有更多的原型链。
原型链的终点示例
const obj = {};
// 访问 obj 的原型
console.log(Object.getPrototypeOf(obj)); // 输出: {}
console.log(Object.getPrototypeOf(Object.getPrototypeOf(obj))); // 输出: null
在上面的代码中,Object.getPrototypeOf(obj)
返回 Object.prototype
,而 Object.getPrototypeOf(Object.prototype)
返回 null
,标志着原型链的终点。