也许这只是一个愚蠢的问题,但是, 如果能解释以下行为,我将不胜感激:
var obj = {
key : "val1",
123 : "val2"
};
obj.key; // "val1"
obj.123; // Syntax error: missing; before statement
obj[123]; // "val2"
为什么 obj.key
与 obj.123
不同
尽管它们都被声明为 obj
的键。
以这种方式访问对象文字 obj.123
是错误的。
并且以下面的方式声明对象是正确的吗? 我测试过的浏览器是 IE9、firefox 和 chrome,它们都运行良好。
var obj = {
123 : "val1"
};
最佳答案
JavaScript 允许您使用几乎任何字符串作为对象属性名称,但是当使用点符号访问属性时,您应该只使用有效的 JS 标识符的属性名称 - 必须以字母开头,下划线或美元符号。因此,对于不符合有效标识符规则的属性名称,您必须使用括号表示法访问它们。
虽然括号表示法适用于数字,但在幕后 JS 会将该数字转换为字符串。
关于javascript - 访问 JavaScript 对象字面量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9030940/