【问题标题】:Getting object properties that start with a number [duplicate]获取以数字开头的对象属性[重复]
【发布时间】:2014-08-25 21:57:06
【问题描述】:

我有一个对象,其中一个属性以数字开头。我读过这是允许的,但我收到了这个错误:

SyntaxError: 标识符在数字文字之后立即开始

var stats = {"LOAD_AVG":{"1_MIN":0.08,"5_MIN":0.08,"15_MIN":0.08},"COUNTS":{"TOTAL":888,"RUNNING":1,"SLEEPING":887,"STOPPED":0,"ZOMBIE":0},"CPU":{"USER_CPU_TIME":8.9,"SYSTEM_CPU_TIME":2.4,"NICE_CPU_TIME":0,"IO_WAIT_TIME":1,"HARD_TIME":0,"SOFT_TIME":0.1,"STEAL_TIME":0},"MEMORY":{"PHYSICAL":{"TOTAL":"3921.98mb","IN_USE":"3682.652mb (93.9%)","AVAILABLE":"239.328mb (6.1%)","BUFFERS":"266.492mb (6.8%)"},"SWAP":{"TOTAL":"4194.296mb","IN_USE":"64.264mb (1.5%)","AVAILABLE":"4130.032mb (98.5%)","CACHE":"1191.328mb (28.4%)"}}};

//works fine
window.alert(stats.COUNTS.TOTAL);

//doesn't work
window.alert(stats.LOAD_AVG.1_MIN);

Here's a fiddle.

如何在不重写生成它的 PHP 的情况下访问以数字开头的属性?

【问题讨论】:

  • 这与 JSON 无关,真的。这只是 Javascript 对象的工作方式,无论是否从文字(基本上是 JSON 的定义)初始化。 foo.bar 只是 foo["bar"] 的一个快捷方式,当密钥字符串恰好生成一个有效的 Javascript 标识符时,它就会起作用。
  • @MarkReed 虽然 OP 没有访问 JSON 对象是正确的,但如果 JSON 没有以数字开头的属性,则问题将不存在:p

标签: javascript


【解决方案1】:

您可以将 bracket access 用于不是有效 JavaScript 标识符的属性,用于带有空格或其他语言符号(如 +、*)的属性名称

window.alert(stats.LOAD_AVG["1_MIN"]);

你可以在任何地方使用括号访问

window.alert(stats["COUNTS"]["TOTAL"]);

【讨论】:

  • 谢谢,这正是我所需要的。很快就会接受。
猜你喜欢
  • 2021-11-03
  • 1970-01-01
  • 2017-04-23
  • 2011-03-15
  • 2011-09-12
  • 2012-03-25
  • 1970-01-01
  • 2011-08-14
相关资源
最近更新 更多