2011-05-09 18 views
-1
//Object approach 
$.myutils = { 
    addNumbers : function(a,b){ 
     //assuming a and b are integers for simplicity 
     return a + b; 
    } 
    subNumbers : function (a,b){ 
     //assuming a and b are integers for simplicity 
     return a - b; 
    } 
}; 
//Usage 
$.myutils.addNumbers(20,10); 
$.myutils.subNumbers(20,10); 

//function approach 
$.myutils = function() 
{ 
    return { 
     addNumbers : _addNumbers, 
     subNumbers : _subNumbers 
    }; 
    _addNumbers : function(a,b){ 
     //assuming a and b are integers for simplicity 
     return a + b; 
    } 
    _subNumbers : function (a,b){ 
     //assuming a and b are integers for simplicity 
     return a - b; 
    } 
} 
//Usage 
$.myutils().addNumbers(20,10); 
$.myutils().subNumbers(20,10); 
+2

http://jsperf.com/救援 – zerkms 2011-05-09 01:41:15

+4

功能**是**對象。 – BoltClock 2011-05-09 01:41:24

+0

face palming .... – Reigel 2011-05-09 01:47:08

回答

0

簡答:對象更快。

你的函數返回一個對象 - 爲什麼它比直接對象更快?

2

雖然這可能被認爲過早優化的情況下,認爲語義不同和第一種方法是可能的優選的(如存在存儲沒有額外的狀態)的情況。

不管怎樣,第一個「對象」的方法是因爲相同功能它們是同一對象屬性調用「更快」(爲「更快」一些值)。

第二個「函數」的方法將是「慢」(代表「較慢」的某個值),因爲每一次執行myutils功能(但要記住,函數也是對象)它返回一個新對象即具有新功能作爲屬性。因此,根據定義,必須做更多的工作。 (此外,第二種方法將不會運行,因爲它將它翻譯爲我的腦海中的「工作代碼」。)

快樂編碼。


繼zerkms的評論,我添加了一個jsperf測試用例:http://jsperf.com/5931661(其中還包括適當的錯誤修復;既有「實例」實際上被打破)。

相關問題