我可以得到一个以数字开头的javascript对象属性名称吗?
var myObj = {"suppliers":[{"name":"supplier1","12m":"0.08","24m":"0.06"}]}; alert(myObj.suppliers[0].12m);
有没有不同的方式来获得这个属性,或者我应该不使用以数字开头的密钥?
您可以使用以下语法来使用括号表示法进行描述:
myObject["myProperty"]
括号符号不同于点符号 (例如myObject.myProperty
),因为它可以用来访问名称不合法的属性。 非法的意思是,使用点符号,您只能使用字母数字属性名称(加下划线_
和美元符号$
),而不能以数字开头。 括号符号允许我们使用一个string来访问一个属性并绕过这个。
myObject.1 // fails, properties cannot begin with numbers myObject.& // fails, properties must be alphanumeric (or $ or _) myObject["1"] // succeeds myObject["&"] // succeeds
这也意味着我们可以使用stringvariables来查找和设置对象的属性:
var myEdgyPropertyName = "||~~(_o__o_)~~||"; myEdgyObject[myEdgyPropertyName] = "who's there?"; myEdgyObject[myEdgyPropertyName] // "who's there?";
在MDN上,您可以在这里阅读更多关于点号和括号的说明 。
是的,使用括号语法:
alert(myObj.suppliers[0]["12m"]);
来自MDN
JavaScript标识符必须以字母,下划线(_)或美元符号($)开头; 后续字符也可以是数字(0-9)。 由于JavaScript区分大小写,所以字母包括字母“A”到“Z”(大写字母)以及字符“a”到“z”(小写字母)。