var myObj = {"suppliers":[{"name":"supplier1","12m":"0.08","24m":"0.06"}]};
alert(myObj.suppliers[0].12m);
有没有不同的方法来获得这个属性,还是我不应该使用以数字开头的键?
var myObj = {"suppliers":[{"name":"supplier1","12m":"0.08","24m":"0.06"}]};
alert(myObj.suppliers[0].12m);
有没有不同的方法来获得这个属性,还是我不应该使用以数字开头的键?
您可以使用以下语法来执行您使用括号表示法描述的操作:
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?";
您可以在 MDN 上阅读有关点和括号表示法的更多信息。
是的,使用括号语法:
alert(myObj.suppliers[0]["12m"]);
来自MDN
JavaScript 标识符必须以字母、下划线 (_) 或美元符号 ($) 开头;后续字符也可以是数字 (0-9)。因为 JavaScript 区分大小写,所以字母包括字符“A”到“Z”(大写)和字符“a”到“z”(小写)。