访问JavaScript Object Literal

时间:2012-01-27 09:00:16

标签: javascript

也许只是一个愚蠢的问题,但是, 我希望得到以下行为的解释:

var obj = {
    key : "val1",
    123 : "val2"
};

obj.key; // "val1"
obj.123; // Syntax error: missing; before statement
obj[123]; // "val2"

为什么obj.keyobj.123不同 虽然它们已被宣布为obj的键。


以这种方式访问​​对象文字obj.123是错误的。

以下列方式声明对象是否正确? 我测试过的浏览器是IE9,firefox和chrome,对于所有这些浏览器都运行良好。

var obj = {
    123 : "val1"
};

1 个答案:

答案 0 :(得分:4)

JavaScript允许您使用任何字符串作为对象属性名称,但是当使用点表示法访问属性时,您应该只使用属于有效JS标识符的属性名称 - 必须以字母开头,下划线或美元符号。因此,对于不符合有效标识符规则的属性名称,您必须使用括号表示法访问它们。

虽然括号表示法使用数字,但在幕后,JS会将该数字转换为字符串。