2011-05-28 30 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的代碼時,第一種方法並不低效。

相關問題