我可以获得以数字开头的javascript对象属性名称吗?

时间:2011-04-27 19:57:31

标签: javascript key

var myObj = {"suppliers":[{"name":"supplier1","12m":"0.08","24m":"0.06"}]};

alert(myObj.suppliers[0].12m);

获取此属性有不同的方法,还是我不应该使用以数字开头的键?

2 个答案:

答案 0 :(得分:28)

您可以使用以下语法执行使用括号表示描述的内容:

myObject["myProperty"]

括号表示法与点表示法(例如myObject.myProperty)的不同之处在于它可用于访问名称非法的属性。非法意味着使用点表示法,您仅限于使用字母数字的属性名称(加上下划线_和美元符号$),并且不以数字开头。括号表示法允许我们使用字符串来访问属性并绕过它。

myObject.1 // fails, properties cannot begin with numbers
myObject.& // fails, properties must be alphanumeric (or $ or _)

myObject["1"] // succeeds
myObject["&"] // succeeds

这也意味着我们可以使用字符串变量来查找和设置对象的属性:

var myEdgyPropertyName = "||~~(_o__o_)~~||";

myEdgyObject[myEdgyPropertyName] = "who's there?";

myEdgyObject[myEdgyPropertyName] // "who's there?";

您可以阅读有关点和括号表示法here, on MDN的更多信息。

答案 1 :(得分:1)

是的,使用括号语法:

alert(myObj.suppliers[0]["12m"]);

来自MDN

  

JavaScript标识符必须以字母,下划线(_)或开头   美元符号($);后续字符也可以是数字(0-9)。   由于JavaScript区分大小写,因此字母包含字符   “A”到“Z”(大写)和字符“a”到“z”   (小写)。