Skip to content

原型链的终点是什么?

Posted on:2024年8月23日 at 05:17

原型链的终点是 Object.prototype

在 JavaScript 中,所有对象的原型链最终都会归结到 Object.prototype,这是原型链的最后一个环节。

原型链的结构

  1. 对象实例:每个 JavaScript 对象都有一个内部属性 [[Prototype]](在代码中通过 __proto__Object.getPrototypeOf 可以访问),这个属性指向该对象的原型。

  2. 构造函数的原型:构造函数创建的对象实例的原型指向构造函数的 prototype 对象。例如:

    function Person(name) {
      this.name = name;
    }
    
    const john = new Person("John");
    

    在这个例子中,john 的原型指向 Person.prototype

  3. Object.prototype:每个对象的原型链最终都会指向 Object.prototype。这是 JavaScript 原型链的终点。Object.prototype 是所有对象的共同祖先,它提供了所有对象共有的属性和方法,如 toString, hasOwnProperty 等。

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

原文转自:https://fe.ecool.fun/topic/32a74e6c-fc06-4f61-b3c4-95a7760157a6