2016-01-11 31 views
3

這是一件很奇怪的事情,我很清楚,但我是一個新手,似乎無法將我的頭圍繞在此。我已經通過火力發給我一個JavaScript對象,看起來像這樣:爲什麼Javascript對象鍵中不能使用逗號?

var blob = { 
    [email protected],com: {   //notice the comma because periods are illegal in keys 
     email: "[email protected]" //actual email with period 
     name: "Matt Sanford" 
     pic: "https://lh3.googleusercontent.com/-LeQrq-_KjJE/AAAAAAAAAAI/AAAAAAAAAoI/4l6r2HNdock/photo.jpg" 
     provider: "google" 
     uid: "0000000000000000" 
     } 
    } 
} 

我試圖通過控制檯訪問最內層的樹,像這樣:console.log([email protected],com) //throws an error because of an invalid token 即使它應該與email返回對象,name

然而,當我試圖相同的結構,像這樣:

var blob = {foo: {bar: true} } 
console.log(blob.foo) //output '{bar: true}' 

有兩件事情我想知道,是有與修改後的電子郵件伊勒初始密鑰加侖,因爲逗號或有沒有辦法讀取JavaScript中的這樣一個鍵?建議非常感謝,因爲我在這裏學習。

更新

我怎麼會去訪問動態的鑰匙?顯然,動態輸入每個密鑰是不可能的。我怎麼讀不知道密鑰名稱是什麼?

+1

兩件事情,** 1 **當密鑰一個對象包含特殊符號,**使用引號** ** 2 **在對象的兩個元素之間使用逗號作爲分隔符 – Tushar

+4

'console.log(blob ['matt @ email,com'])' – Paulpro

回答

9

你發佈的內容不是json對象,它是一個javascript對象。 JSON將引用所有的鍵。

逗號的肯定是允許的,但你不能使用標準obj.property語法是這樣的:

console.log([email protected],com) 

你必須做的:

console.log(blob['[email protected],com']); 
+0

Firebase發送的內容回到我身邊是一個JavaScript對象?不是json? –

+0

如果firebase發送了一些有'var'的東西,並且它與你發佈的確切結構相同,那麼是的......它不會將你發回json。不過,我認爲你不會複製粘貼的東西,firebase發回給你,因爲樣本中也有語法錯誤。這告訴我你可能會錯誤地重新鍵入它。 – Evert

+0

在JSON中沒有'var',沒有評論,每個屬性和字符串值都必須用雙引號包圍。 – Evert

相關問題