所以我在JS(ES6)学习数组,我想知道为什么我们不能用点符号访问数组元素
var arr = [1,2,3,4,5];
console.log(arr[0]); //fine
console.log(arr['0']); //it works, some internal typecasting I guess
console.log(arr.0); // fails
console.log(arr.'0'); // fails too.
正如JS哲学所说(虽然不是官方声明):
" JS中的所有东西都是对象"
之后我希望它在这里工作,但后来我尝试使用object实现我自己的数组。 (不知道它是如何实现的。)
var obj = {0:1, 1:2, 2:3, 3:4, 4:5};
console.log(obj[0]); //works
console.log(obj['0']); //works
console.log(obj.0); //fails
console.log(obj.'0'); //fails
所以即使是我自己的实现,也会给出与实际数组实现相同的结果。
var obj = {"012":0, "a012":1};
console.log(obj.012); //fails
console.log(obj."012"); //fails
console.log(obj[012]); //surprisingly fails returns undefined.
console.log(obj["012"]); //works
console.log(obj.a012); //It works ah .
使用点符号访问带数字键的对象有什么问题? 我知道事实属性应该是一个字符串,但" 012"或任何其他只包含数字字母(无字母)的字符串无效。为什么呢?