1

此代码将提醒对象 a 中的所有属性名称。0,1,2,你好。

Object.prototype.hello = {};

var a = [1,2,3];

for ( var number in a ) {
    alert( number)
}

我的问题是,我可以通过以下语法访问属性 hello:

a.hello

但是为什么我不能访问a.0应该等于 1 的值。数组声明不是创建“真实属性”吗?

我知道我可以通过 a[0] 和 a["hello"] 访问属性

4

4 回答 4

7

这是语法限制。在 JavaScript 中,标识符不能以数字开头,因此0不是有效的。a.0然后会产生语法错误。

于 2012-09-17T12:30:32.627 回答
3

因为

JavaScript 标识符必须以字母、下划线 (_) 或美元符号 ($) 开头;

于 2012-09-17T12:31:06.820 回答
2

使用语法访问数组中的项目myArray[index]。点表示法仅允许您访问名称为有效标识符的属性,并且数组中项目的索引(作为数字)不符合条件。因此,您必须使用更宽松的括号表示法。

于 2012-09-17T12:30:38.897 回答
1

JavaScript 标识符不能以数字开头。您尝试访问的属性是对象内的标识符。

你会在这里找到https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Values,_variables,_and_literals这个片段:

变量

您在应用程序中使用变量作为值的符号名称。变量的名称,称为标识符,符合一定的规则。

JavaScript 标识符必须以字母、下划线 (_) 或美元符号 ($) 开头;后续字符也可以是数字 (0-9)。因为 JavaScript 区分大小写,所以字母包括字符“A”到“Z”(大写)和字符“a”到“z”(小写)。

从 JavaScript 1.5 开始,您可以在标识符中使用 ISO 8859-1 或 Unicode 字母,例如 å 和 ü。您还可以使用 \uXXXX Unicode 转义序列作为标识符中的字符。

合法名称的一些示例包括 Number_hits、temp99 和 _name。

于 2012-09-17T12:31:20.800 回答