2015-11-07 55 views
0

值就我所知,你可以在兩種方式的關鍵地圖的價值:最好的方式來獲得地圖的在javascript

var myMap = {a: 1, b: 2} 
var firstWay = myMap.a 
var secondWay = myMap['a'] 

哪種方法最好?這是否有對流?我應該避免第一種方式,並可能在將來遇到任何問題(例如IE可能不支持它)? 據我所知,如果我有一些需要文本轉義的鍵,我將無法在地圖對象上使用.value,但簡單情況如何?

我的主觀觀點是,第一種方式看起來更好。

+3

如果您知道該屬性的名稱,請使用點符號;如果它是可變屬性名稱,請使用括號[]。 – baao

+0

你現在編輯你的問題的方式使它完全是主觀的,並要求意見。如果這就是你現在所說的全部問題,那麼它在這裏被認爲是脫離主題,應該被關閉。在你編輯你的問題之前,我提供了一個答案,純粹是關於意見。 – jfriend00

+0

@ jfriend00 - 我編輯它,但我只是突出顯示了一直存在的句子。我這樣做是因爲我注意到你(和德米特里)的答案似乎忽略了這一點。 – Amit

回答

0

技術上唯一的區別是即使您不知道屬性名稱,也可以使用[property]語法。例如:

property = 'a' 
myMap[property] // results in 1 

否則,只需使用點符號。

另外一些人使用一種慣例,即爲自己的數據使用點符號,但使用括號來訪問從某些外部源獲取的數據。

+0

這不是OP所要求的。 – jfriend00

+0

「否」也是一個答案,現在OP知道他可以更多地使用他喜歡的任何東西,因爲在簡單情況下沒有顯着差異。 –

+0

OP要求***「哪種方式更可取?」***。當你刪除編程原因選擇一個出現問題的對方時,除了這個問題外,沒有什麼可以留下,而是讓問題脫離主題的意見。如果你想嘗試一個「沒有偏好」的答案,那麼你可以做到這一點,但這不是你現在的答案。 – jfriend00

1

區別在於點符號需要屬性名稱爲identifierName。例如:

obj["a-b"]; // ok 
obj.a-b; // fail! Parsed as `(obj.a) - b` 

此外,在ECMAScript 5之前,點符號只允許標識符。也就是說,它排除了保留字。然後,

obj.class; // ok in ES5+ 
obj.class; // fail on old browsers 

因此,在這些情況下,您可能更喜歡括號表示法。

否則沒關係。

相關問題