为什么使用数字键的JS对象无法使用点表示法访问

时间:2018-05-06 05:44:12

标签: javascript arrays ecmascript-6

所以我在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"或任何其他只包含数字字母(无字母)的字符串无效。为什么呢?

0 个答案:

没有答案