为什么要在继承对象之外声明原型函数?
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?.
关于 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?.