数组可以容纳任何类型的值,且不需要预先设定大小.
使用delete删除项目数组的length不会发生改变.就变成了稀疏数组.

  1. var array = [0,1,2];
  2. delete array[1];
  3. array;//[0, 空, 2]
  4. array.length;//3

稀疏数组(sparse array), 即含有空白或空缺单元的数组
也就是说数组中的’空’元素,不会影响数组的长度.
访问空元素,会返回undefined,但这与直接赋值为undefined有所区别.TODO…

  1. var array = [];
  2. array[0] = 1;
  3. array[2] = 2;
  4. array[1];//undefined
  5. array.length;//3

数组也是对象,可以添加字符串属性,但是不计算长度

  1. var array = [0,1,2];
  2. array['footer'] = 'footer';
  3. array.length;//3

但是如果字符串属性可以被转换成十进制数字的话,会被当作数组索引.

  1. var array = [0,1,2];
  2. array['3'] = '3';
  3. array;//[0, 1, 2, "3"]

类数组对象

一些dom操作会返回dom元素(NodeList)列表以及函数的参数,他们属于类数组,没有数组的方法 :::info 数组的原型链
myArray —> Array.prototype —> Object.prototype —> null ::: :::info NodeList 的原型链
myNodeList —> NodeList.prototype —> Object.prototype —> null :::

转换成数组

  1. function foo(){
  2. //slice()返回参数列表的一个数组复本
  3. var array = Array.prototype.slice.call(arguments);
  4. array.push('item');
  5. console.log(array);//[1, 2, "item"]
  6. }
  7. foo(1,2)
  1. function doo(){
  2. var array = Array.from(arguments);
  3. array.push('item');
  4. console.log(array);//[1,2,'item']
  5. }
  6. doo(1,2)