为什么逗号不能在Javascript对象键中?

时间:2016-01-11 05:50:04

标签: javascript angularjs json firebase

这是一个奇怪的问题,我知道,但我是一个新手,似乎无法绕过这个。我有一个通过firebase发送给我的Javascript对象,如下所示:

var blob = {
    matt@email,com: {         //notice the comma because periods are illegal in keys
       email: "matt@email.com" //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(blob.matt@email,com) //throws an error because of an invalid token 即使它应该使用emailname等返回对象

然而,当我尝试相同的结构时:

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

我想知道有两件事,因为逗号是修改后的电子邮件的初始密钥是非法的,还是没有办法在javascript中读取这样的密钥?建议是值得赞赏的,因为我正在学习,因为我在这里学习。

更新

我如何动态访问密钥?显然,动态输入每个密钥是不可能的。如何在不知道密钥名称是什么的情况下阅读它?

1 个答案:

答案 0 :(得分:9)

您发布的内容不是json对象,而是javascript对象。 JSON会引用它的所有键。

明确允许使用逗号,但您不能使用这样的标准obj.property语法:

console.log(blob.matt@email,com)

你必须这样做:

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