我可以得到一个以数字开头的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”(小写字母)。