原型链(Prototype Chain)是 JavaScript 中用于实现继承和对象之间关系的一种机制。在 JavaScript 中,每个对象都有一个内部链接(prototype),它指向另一个对象。这个被指向的对象就是原型对象(prototype object),它包含了对象的共享属性和方法。
- 每个对象都有一个原型对象:在 JavaScript 中,几乎所有的对象都具有一个内部的
__proto__
属性,它指向该对象的原型对象。- 原型对象也可以有原型:原型对象也是对象,因此它们也可以有自己的原型,形成一条链,依次追溯到最顶层的对象,通常是
Object.prototype
。- 属性和方法查找:当您尝试访问对象的属性或方法时,如果该对象本身没有这些属性或方法,JavaScript 引擎将继续在该对象的原型对象上查找,然后在原型对象的原型对象上查找,直到找到匹配的属性或方法或达到原型链的末端。
这个机制允许对象之间共享属性和方法。当一个对象的原型对象上定义了属性或方法,所有基于该原型对象创建的对象都可以访问和继承这些属性和方法。
function Animal(name) { this.name = name; } Animal.prototype.speak = function() { console.log(this.name + ' makes a sound'); }; const cat = new Animal('Whiskers'); cat.speak(); // 输出 "Whiskers makes a sound"
cat
对象继承了 Animal.prototype
中的 speak
方法,因为它的原型链指向 Animal.prototype
,从而能够调用 speak
方法。
原型链在 JavaScript 中是一个关键的概念,它使对象之间能够共享行为和属性,并支持对象之间的继承关系。这是 JavaScript 中实现面向对象编程的核心机制之一。