2014-02-22 45 views
2

可以說我們有一個要求,其中一個元素可以出現在幾種狀態。Javascript性能:將變量附加到緩存的dom元素與附加的id調用編號

var a = documentCreateElement('a'); 

要檢查元素一個是哪種狀態,並保持一個日誌活動狀態的,我有這樣的對象:

var state = { 
    all_states = ['State 1', 'State 2', 'State 3'], 
    active = 'State 2' 
} 

這過程會佔用更多的資源?

  • 甲:附加的ID 一個狀態對象檢查狀態?然後通過ID調用它(讓我們改變hrefa)。

    • B:OR,A元素是已被緩存在一個,直接連接的對象一個,因此避免重新緩存的元件都在一起。

如選擇B的:

a.state = state; 
// Check state by checking a.state.active 
+1

試試吧:http://jsperf.com/。 –

回答

0

我敢打賭很多的緩存版本速度更快,因爲解析複雜的文檔可以是昂貴的,你保持一個指向JS對象。但是,確保你必須測試它。請確保使用與您打算髮布的內容相當複雜的html文檔。

+0

我運行了一個包含大量元素(〜40)的測試用例,並且緩存版本(選項B)表現更好。幾乎是40倍。謝謝! –