我正在構建一些HTML5遊戲,並且我不確定關於javascript中的一件事情。Javascript性能:變量vs大對象的屬性
當處理一個大對象(具有很多屬性和方法)時,它在某種程度上是不同的,如果我將屬性值存儲在一個變量中?
假設我必須每秒多次檢查application.data.setings.foo.bar
的某個值。我應該將它存儲在變量fooBar
?如果我理解正確,那麼這個變量就只是一個參考,所以它應該沒有關係。
so:應該將大對象屬性的值存儲在變量中嗎?
我正在構建一些HTML5遊戲,並且我不確定關於javascript中的一件事情。Javascript性能:變量vs大對象的屬性
當處理一個大對象(具有很多屬性和方法)時,它在某種程度上是不同的,如果我將屬性值存儲在一個變量中?
假設我必須每秒多次檢查application.data.setings.foo.bar
的某個值。我應該將它存儲在變量fooBar
?如果我理解正確,那麼這個變量就只是一個參考,所以它應該沒有關係。
so:應該將大對象屬性的值存儲在變量中嗎?
我相信你問的是:
如果你有一個變量叫:
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個步驟。
如果您將其引用到局部變量中以進行訪問 - 您仍然碰到相同的對象,但是您直接在每個引用上擊中它。但是,在一天結束時,這不太可能是一個非常顯着的性能增強,除非您正在進行大量的快速訪問循環或類似的操作。
經典的「嘗試並測量結果」可能適用於此。但是,只要你不是每次都搜索它,我想相信它會表現良好。 – scunliffe