JavaScript 中的原型链是理解对象继承和属性查找的关键。在这个教程中,我们将探讨 JavaScript 中的原型链是如何工作的,以及如何利用它来简化代码和提高效率。

原型链的概念

原型链是 JavaScript 对象继承的一种机制。每个 JavaScript 对象都有一个原型(prototype)属性,它指向一个对象,这个对象包含了它的共享属性和方法。当你访问一个对象的属性或方法时,JavaScript 引擎会先在对象本身中查找,如果找不到,就会沿着原型链向上查找,直到找到或者到达原型链的末端。

示例代码

以下是一个简单的例子,展示了原型链的工作原理:

function Animal(name) {
  this.name = name;
}

Animal.prototype.sayName = function() {
  console.log(this.name);
};

let dog = new Animal('Buddy');

// 输出:Buddy
dog.sayName();

在这个例子中,dog 对象通过原型链继承自 AnimalsayName 方法。

原型链的查找过程

当访问一个对象的属性或方法时,JavaScript 引擎会按照以下步骤进行查找:

  1. 检查对象本身是否有该属性或方法。
  2. 如果没有,沿着原型链向上查找,直到找到或到达原型链的末端(null)。

修改原型链

你可以在运行时修改一个对象的原型链:

dog.__proto__ = { anotherMethod: function() { console.log('Hello!'); } };

// 输出:Hello!
dog.anotherMethod();

注意:__proto__ 是一个非标准的属性,它不推荐在代码中使用,因为它可能在不同的 JavaScript 引擎中表现不一致。

扩展阅读

如果你对原型链有更深入的了解,可以阅读《深入理解JavaScript原型链》

相关图片

  • JavaScript 对象图解
  • JavaScript 原型链图解