值就我所知,你可以在兩種方式的關鍵地圖的價值:最好的方式來獲得地圖的在javascript
var myMap = {a: 1, b: 2}
var firstWay = myMap.a
var secondWay = myMap['a']
哪種方法最好?這是否有對流?我應該避免第一種方式,並可能在將來遇到任何問題(例如IE可能不支持它)? 據我所知,如果我有一些需要文本轉義的鍵,我將無法在地圖對象上使用.value,但簡單情況如何?
我的主觀觀點是,第一種方式看起來更好。
值就我所知,你可以在兩種方式的關鍵地圖的價值:最好的方式來獲得地圖的在javascript
var myMap = {a: 1, b: 2}
var firstWay = myMap.a
var secondWay = myMap['a']
哪種方法最好?這是否有對流?我應該避免第一種方式,並可能在將來遇到任何問題(例如IE可能不支持它)? 據我所知,如果我有一些需要文本轉義的鍵,我將無法在地圖對象上使用.value,但簡單情況如何?
我的主觀觀點是,第一種方式看起來更好。
技術上唯一的區別是即使您不知道屬性名稱,也可以使用[property]
語法。例如:
property = 'a'
myMap[property] // results in 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
因此,在這些情況下,您可能更喜歡括號表示法。
否則沒關係。
如果您知道該屬性的名稱,請使用點符號;如果它是可變屬性名稱,請使用括號[]。 – baao
你現在編輯你的問題的方式使它完全是主觀的,並要求意見。如果這就是你現在所說的全部問題,那麼它在這裏被認爲是脫離主題,應該被關閉。在你編輯你的問題之前,我提供了一個答案,純粹是關於意見。 – jfriend00
@ jfriend00 - 我編輯它,但我只是突出顯示了一直存在的句子。我這樣做是因爲我注意到你(和德米特里)的答案似乎忽略了這一點。 – Amit