为什么要在继承对象之外声明原型函数?

Why declare prototype functions outside the inheriting object?

关于 Javascript 的继承实现有很多问题,尽管我还没有找到为什么在我看到的所有示例和答案中都在 [= 之外声明原型的答案19=]。此外,它似乎无法使用 this.prototype,这对于来自 OOP 背景的人来说似乎不直观。

有什么区别吗:

function AClass() {
   AClass.prototype.AMethod = function(parms) { };
}

function AClass() { }
AClass.prototype.AMethod = function(parms) { };

区别与您可能放在函数内部或函数外部的任何其他语句完全相同。如果在函数内部,则在调用函数时运行。

每次实例化对象时都重新定义 "class" 的一部分是没有意义的。

每次调用 AClass 时,如果 AMethod 放在函数作用域内,您就是在重新定义 AMethod。它减慢了代码。当您将创建许多具有重复功能的对象时,原型很有用。 Here is a similar question delving in related discussion 更详细 Use of 'prototype' vs. 'this' in JavaScript?.