对象属性名称为数字

Rob*_*cha 50 javascript object

根据官方JavaScript文档,您可以使用整数定义对象文字属性名称:

此外,您可以使用数字或字符串文字作为属性的名称.

像这样:

me = {
    name: "Robert Rocha",
    123: 26,
    origin: "Mexico"
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,你如何引用具有整数作为名称的属性?我试过平常me.123但得到了一个错误.我能想到的唯一解决方法是使用for-in循环.有什么建议?

Tom*_*Tom 71

您可以像对待数组一样引用对象的属性并使用me[123]me["123"]

  • @Joshua - 您的评论在所有方面都是错误的.你有没有试过它?如果`a`是`Array`,你可以指定`a [123] = 1`然后`a ["123"] = 2`,同样的数组元素将被改变.同样,如果`o`是一个`Object`,你可以设置`o [123] = 1`并设置`o`的''123'属性(就像你执行了'o ['123 '] = 1`.此外,由于`Array`实例也是`Object`实例,你可以设置和读取'a ['xyz']`,即使`a`是`Array`.所有这些行为都被描述在[ECMAScript语言规范](http://www.ecma-international.org/ecma-262/5.1/)中. (2认同)

Rob*_*obG 25

点表示法仅适用于作为有效标识符的属性名称.标识符必须以字母,$,_或unicode转义序列开头.对于所有其他属性名称,必须使用括号表示法.

在对象文字中,属性名称必须是标识符名称,字符串文字或数字文字(由于属性名称必须是字符串,因此将转换为字符串):

var obj = {1:1, foo:'foo', '+=+':'+=+'};

alert(obj[1] + ' ' + obj.foo + ' ' + obj['+=+']); // 1 foo +=+
Run Code Online (Sandbox Code Playgroud)


Ted*_*opp 14

你可以使用me[123]me["123"].两者都有效.


Ste*_*ler 6

您可以使用括号表示法 me[123].