3

我想知道在以下情况下insideFnoutsideFn有什么区别:

 function Construct()
 {       
   this.insideFn = function(obj){
   ....
   }
 }

 Construct.prototype.outsideFn = function(obj){
      ...
 }

哪一种使用效率高?

4

3 回答 3

5

在第一种情况下,使用创建的每个实例Construct都有自己的insideFn,如果您使用多个实例,这将浪费内存。在第二种情况下,每个 的实例都Construct将只有一个对 的引用outsideFn。所以后者更好。

于 2012-10-26T09:28:43.480 回答
0

在第一个构造中,方法是 的实例的属性Construct。在第二个构造中,方法是prototype对象的属性Construct

如果在prototype对象内部定义函数,调用时它们将是相同的。该prototype变体通常可以节省内存并加快代码速度。您还可以重载prototype对象实例中的函数,以更改对象的默认行为。

要获得更好的英语和更多详细信息,请参阅http://www.javascriptenlightenment.com/

于 2012-10-26T09:35:35.607 回答
-1

第一个function Construct() {}是一个类(在 javascript 中它是一个对象),而稍后您将使用关键字继承(扩展)这个类prototype并添加一个更多功能outsideFn。JavaScript 中没有特定的类,因此您必须将对象用作类。

于 2012-10-26T09:27:36.540 回答