2012-09-20 55 views
1

我正在構建一些HTML5遊戲,並且我不確定關於javascript中的一件事情。Javascript性能:變量vs大對象的屬性

當處理一個大對象(具有很多屬性和方法)時,它在某種程度上是不同的,如果我將屬性值存儲在一個變量中?

假設我必須每秒多次檢查application.data.setings.foo.bar的某個值。我應該將它存儲在變量fooBar?如果我理解正確,那麼這個變量就只是一個參考,所以它應該沒有關係。

so:應該將大對象屬性的值存儲在變量中嗎?

+1

經典的「嘗試並測量結果」可能適用於此。但是,只要你不是每次都搜索它,我想相信它會表現良好。 – scunliffe

回答

-1

對於數字,你可能會看到的性能提升,如果你把它放在一個變量

+2

你會介意分享這是爲什麼嗎? – mreq

1

我相信你問的是:

如果你有一個變量叫:

application.data.settings.foo.bar = { some: 'value' }

它是更好的性能,通過使用application.data.settings.foo.bar訪問它 - 或者改爲:var bar = application.data.settings.foo.bar,然後參考bar

我的猜測是,對變量的賦值可能稍微高一點 - 僅僅是因爲解釋器訪問相關項目的步驟較少。如果使用application.data.settings.foo.bar - 解釋必須利用參考application對象,然後引用它的data屬性,則引用其setting屬性,則引用其foo屬性,則引用其bar財產。這是5個步驟。

如果您將其引用到局部變量中以進行訪問 - 您仍然碰到相同的對象,但是您直接在每個引用上擊中它。但是,在一天結束時,這不太可能是一個非常顯着的性能增強,除非您正在進行大量的快速訪問循環或類似的操作。