什么是数组

  • 数组是一个有序的有 length 的 hash,它的 __proto__ 指向 Array.prototype。

数组与对象

Array 与 Object 的差别,Array 的共有属性 __proto__ 里面有 push 等方法,而且还包含 Object 的 __proto__。如果一个对象没有 Array 的共有属性 __proto__ 里面的方法比如 push 方法,那么它就不是一个 Array。

比如

var obj = {
0: 1,
1: 2,
2: 3,
length: 3
}
obj.push // undefined.

这个 obj 就不是一个数组,它只是一个对象。

JavaScript 里面的伪数组

JavaScript 里面只有一个伪数组 arguments。arguments 表示传给函数的参数。

var f = function() {
console.log(arguments)
}
f()