从性能上来分析
其实很多情况不需要考虑性能。如果不是做计算密集的处理,仅仅是浏览器客户端的执行,性能影响几乎可以忽略不计。
https://stackoverflow.com/questions/8423493/what-is-the-performance-of-objects-arrays-in-javascript-specifically-for-googl参考这篇文章,Array 的 push pop 大约是 Object 的 20 倍。
shift 虽比 pop 慢 6 倍,但仍然是 Object delete 效率的 100 倍。
从代码可读性角度上看,Array 字面量足够清晰。写法 2 过于冗余。
从数据结构上来看,Array 继承 Array.prototype 的一系列方法,并且 Array 的元素 index 和 length 都是动态的,写法 2 并没有
从语法规范,你这两种写法都是正确的,你怎么开心怎么写。
实际情况呢?
除非 index 是固定值的情况,如 key 为 number 的某哈希散列,不太可能有机会用到第二种形式。
因为 array 会继承 Array 的方法,Object 类型没有响应的操作,如果需要进行响应的操作写法会很不方便。
当然,如果你要自己实现一个用 Object 来实现的类 Array 对象也没有问题。
有时候有些确实会钻进牛角尖,比如这个例子。很多时候总是在想是这样好还是那样好,想了半天结果代码没写多少。实际上,当你不知道哪一种写法好的时候,选一种你觉得还可以的写法写下去就行了。遇到了不方便、不好用、不适合的情况自然就有答案,各种选择的优劣何在了。