2016-01-11 32 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

相关问题