## 前言 在 JS 中,`Arrary` 是一个特殊的对象。我们回忆一下对象的定义:在 JS 中,由键值对组成的无序的合集。但是很多时候我们并不关心对象的键值对的键,我们只是希望它是按照一定的顺序,然后我们可以依次的取出来或者对它进行依次的操作。那么这个时候我们就需要使用一种特殊的数据类型 `Arrary`。 > Arrary:在 JS 中,如果一个对象是有序的,那么我们就称这种特殊的对象为数组 ## 一、数组的特性 1. 数组的项的数据类型是不限制的 2. 数组的长度(length)可以调整 3. 数组可以 ## 二、创建数组 ### 1. new 操作符 ~~~js let arrary = new Arrary(1,2,3) ~~~ ### 2. 字面量 ~~~js let arrary = []; arrary[0] = 1; arrary[1] = 2; arrary[2] = 3; ~~~ ## 三、数组长度的上限 > 2^32-2 ## 四、检测数组 1. instanceof `object instanceof Arrary` 2. `list.constructor === "Arrary"` 3. ES5中新方法 `isArrary()` 返回布尔类型 4. `Object.prototype.toString.call(list) === "[object Arrary]"`:[为什么用Object.prototype.toString.call(obj)检测对象类型?](https://www.cnblogs.com/youhong/p/6209054.html):只能判断出12种对象(8种常见对象+1种错误对象+2内置对象+函数中的Arguments对象) 你在使用的时候,先判断浏览器是否支持 `isArrary()`,使用 `typeof list.isArrary()` 判断是否是 `Function`。如果不是Function,则使用第四种。 ## 操作数组的方法 [![数组的方法](images/数组的方法.svg)](http://naotu.baidu.com/file/50efd25c5d66e6b0b34876dacce4ffd1?token=29edf2e743b75033) ### 排序方法 `reverse()` 和 `sort()` 方法的返回值是经过排序之后的数组。