此代码将提醒对象 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"] 访问属性
此代码将提醒对象 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"] 访问属性
这是语法限制。在 JavaScript 中,标识符不能以数字开头,因此0
不是有效的。a.0
然后会产生语法错误。
因为:
JavaScript 标识符必须以字母、下划线 (_) 或美元符号 ($) 开头;
使用语法访问数组中的项目myArray[index]
。点表示法仅允许您访问名称为有效标识符的属性,并且数组中项目的索引(作为数字)不符合条件。因此,您必须使用更宽松的括号表示法。
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。