javascript - 为什么逗号不能出现在 Javascript 对象键中?

标签 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}'

有两件事我想知道,修改后的电子邮件的初始 key 是否因为逗号而非法,或者是否没有办法在 javascript 中读取这样的 key ?感谢推荐,因为我只是在这里学习。

更新

我将如何动态访问 key ?显然不可能动态输入每个键。如果不知道键名到底是什么,我将如何阅读它?

最佳答案

您发布的不是 json 对象,而是 javascript 对象。 JSON 将引用所有键。

逗号是绝对允许的,但你不能像这样使用标准的 obj.property 语法:

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

你必须做到:

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

关于javascript - 为什么逗号不能出现在 Javascript 对象键中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34714962/

相关文章:

javascript - DHTMLX 和 Angular.js 集成

json - 如何获取主键相关字段嵌套序列化程序 django rest 框架的所有值

c# - 为什么我的 Nancy 调用 Bind<T>() 返回一个空对象?

javascript - 使用 Javascript 读取 URL 中显示的 JSON 字符串

javascript - 如何用Jquery让TD向右滑动

javascript - 使用 PHP (openssl_encrypt) 发出加密,然后使用 JS (CryptoJS) 解密

javascript - 如何在 iOS 上取消双击滚动手势?

javascript - 使用处理程序进行 JQuery 自动完成

performance - 多个观察者处理相同的值,性能如何?

javascript - 如何在 javascript 中插入带有 angularJS 属性的 HTML?