2011-11-15 29 views
1

我想知道什麼是訪問一個JavaScript對象,點運算符或[]的最佳方式:哪個是訪問JavaScript對象的最快方式?

data.propertydata["property"]

+0

如果您想要訪問的屬性已知,請使用'data.prop'。否則使用'data [prop]'。請注意,這些不同。然而'data [「prop」]'和'data.prop'是一樣的。注意引號。我只是這樣說的,因爲我認爲使用'.'運算符更具慣用性。 –

+2

當然,你可能知道你想訪問的屬性,但仍然必須使用關聯數組符號。例如,如果'prop'包含一個不允許用點符號表示的字符。 – kojiro

回答

2

兩者速度相同。另外,如果您擔心訪問附加到引用的字段的速度級別,我認爲您可能會錯誤地調整代碼。

2

兩者差不多都是一樣的,,除了在Safari中的,在這種情況下點符號顯着加快。

作爲Javascript應用程序中性能問題的主要來源,您最好專注於DOM操作,DOM大小和CSS複雜性。這就是說,如果你在一個循環中進行大量的屬性訪問,局部變量將比屬性訪問或數組查找快得多。如果要重複訪問對象屬性,請將其複製到變量中。 順便說一句,不要使用「with」語句。它可以通過向作用域鏈中引入另一個對象來減慢本地變量的訪問速度。

由於Javascript引擎首先在本地查看所有變量,然後檢查全局範圍內的所有變量,因此在本地範圍內定義的變量將比全局範圍內的變量訪問速度快得多。範圍也可以嵌套,因此變量所在的嵌套鏈越遠,查找的時間就越長。這就是爲什麼如果要訪問多次的話,最好在局部變量中緩存「document」之類的東西。

0

訪問對象屬性的最佳方式通常與速度無關。 Dot操作符用於句法糖(I.E. this.hasElements()在您的大腦中比在this["hasElements"]()更容易閱讀,編寫和處理),並且當鍵名稱是變量或具有非法字符時使用括號。

相關問題