原型链的终点是 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,标志着原型链的终点。