2011-05-28 48 views
3

我正在使用John Resig的JavaScript class definition style。下面是一个示例类。将方法直接添加到JavaScript构造函数和使用原型添加方法之间有什么区别?

var Person = Class.extend({ 
    init: function(isDancing){ 
    this.dancing = isDancing; 
    }, 
    dance: function(){ 
    return this.dancing; 
    } 
}); 

的另一种方式定义舞蹈方法是:

Person.prototype.dance = function(){ 
    return this.dancing; 
}; 

我喜欢用第一种方式,但有人建议我,这是低效的。两种方式有什么区别?

+0

如果您找到答案,请自己回答问题(有一个标有“回答自己的问题”的按钮或其他内容)并将其标记为答案。这样未来的窥视可以受益。 :-) – 2011-05-28 21:56:50

+0

@Thomas Shields已经尝试过......但没有足够的观点来回答我自己的问题。将不得不等待8小时:) – Cracker 2011-05-28 22:26:08

+0

啊,好吧。忘了那个。 :) – 2011-05-28 22:30:24

回答

0

刚刚发现了我自己的解决方案。

John Resig的扩展函数根据作为参数传递的对象自动创建构造函数。在第一种方式中,对象中的舞蹈方法将自动分配给返回对象的原型。这意味着返回的构造函数(类)实际上将使用第二种风格。所以没有必要使用第二种方法。

因此,当使用John Resig的代码时,第一种方法并不低效。

相关问题