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