我注意到,如果我尝试使用带有数字值的键名创建一个对象,则会抛出一个错误(这与此处列出的JavaScript命名一致:哪些字符对JavaScript变量名有效?).但是,我注意到,如果我这样做,我仍然可以动态添加这样的变量名
失败:
object.1foo = "bar";
Run Code Online (Sandbox Code Playgroud)
失败:
object = {
1foo: "bar"
}
Run Code Online (Sandbox Code Playgroud)
成功:
object["1foo"] = bar;
Run Code Online (Sandbox Code Playgroud)
这是为什么?
当你这样做时,object["1foo"]你实际上是在转义属性的名称,所以这就是它起作用的原因。
另一个也失败了,因为 1foo 没有转义,它的形式相同。
如果您想使用标准点符号(例如 object.property)访问对象成员,则不允许使用除 _ 或 $ 之外的任何特殊字符;除此之外,名称不能以数字开头。对于所有其他情况,您必须使用方括号和引号来访问对象元素。