2012-05-22 186 views
0

我正試圖用下面的方式來編寫JS模塊。在內存和CPU上編寫模塊有什麼意義。第二個會在瀏覽器中佔用更多的內存嗎?Javascript模塊聲明 - 性能

使用函數聲明

function MyModule() { 
    this.getOperation1 = operation1; 
    function operation1() { 
     return "XYZ" 
    } 
} 

使用變量定義

var MyModule = { 
    getOperation1: function() { 
     return "XYZ" 
    } 
    } 
+0

的可能重複[面向對象的JavaScript最佳實踐?](http://stackoverflow.com/questions/907225/object-oriented-javascript-best-practices) – antyrat

+0

我回顧了這個線程,它沒有涵蓋內存/ CPU角度的問題。 – tech20nn

+0

你最終想達到什麼目的? – Tamil

回答

1

內存明智他們相同 - 無論是創建一個對象。

但是:

  1. 您只能使用new與基於功能模塊的格式。後者只是創建單個對象,而不是可用於創建其他實例的構造函數。

  2. 使用函數可以將私有局部變量包含在作用域中。

然而,在大多數箱子更好的方法是這樣的:

function MyModule() { 
} 

MyModule.prototype.getOperation1 = function() { 
    ... 
} 

保證,如果你創建多個實例,它們都只是份額一個getOperation1功能的副本。這就是說,如果你所要做的只是命名空間的功能,而且它們不會自然地形成一個「對象」(在OOP意義上),那麼你也可以使用對象文字語法。

1

請參閱本yui-blog內存相關參數

從同一

通過使用新的調用功能,對象保存到一個毫無價值的 原型對象。這廢物存儲不抵消的優勢。如果 我們不使用新的,我們不把浪費的原型對象 鏈

正如@Alnitak提到利用prototype對象的櫃面你是多達實現constructor功能,使所有實例會共享相同的對象。

要檢查CPU明智[速度]使用www.jsperf.com並做一個性能測試。一些已經可用的測試 Function InvocationObject.create vs newGeneric