Skip to content
On this page

第 6 章 行为委托

第 5 章详细介绍了[[Prototype]]机制并说明了为什么在“ 类”或者“ 继承”的背景下 讨论[[Prototype]]容易产生误解( 这种不恰当的方式已经持续了 20 年)。我们搞清 楚了繁杂的语法( 各种.prototype代码),也见识了各种各样的陷阱( 比如出人意料 的.constructor和丑陋的伪多态语法),我们还看到了用来解决这些问题的各种“ 混入” 方法。

你可能会很好奇, 为什么看起来简单的事情会变得这么复杂。 现在我们会把帘子拉开, 看 看后面到底有什么。 不出意外, 绝大多数JavaScript开发者从来没有如此深入地了解过 JavaScript,他们只是把这些交给一个“类”库来处理。

现在, 我希望你不仅满足于掩盖这些细节并把它们交给一个“ 黑盒”库。 忘掉令人困惑的 类, 我们用一种更加简单直接的方法来深入发掘一下JavaScript中对象的[[Prototype]]机 制到底是什么。

首先简单回顾一下第 5 章的结论:[[Prototype]]机制就是指对象中的一个内部链接引用 另一个对象。

如果在第一个对象上没有找到需要的属性或者方法引用, 引擎就会继续在[[Prototype]] 关联的对象上进行查找。 同理, 如果在后者中也没有找到需要的引用就会继续查找它的 [[Prototype]],以此类推。这一系列对象的链接被称为“原型链”。

换句话说,JavaScript中这个机制的本质就是对象之间的关联关系。

这个观点对于理解本章的内容来说是非常基础并且非常重要的。