这两个javascript函数有什么区别?

时间:2012-10-26 09:25:29

标签: javascript

我想知道以下情况中 insideFn outsideFn 之间有什么区别:

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

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

哪一个有效使用?

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

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

Construct对象的属性

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

有关更好的英语和更多详情,请参阅http://www.javascriptenlightenment.com/

答案 2 :(得分:-1)

第一个function Construct() {}是一个类(在javascript中它是一个对象),后来你使用关键字prototype继承(扩展)这个类并再添加一个函数{{1} }。 JavaScript中没有特定的类,因此您必须将对象用作类。