ES6+ Array.of()

1. 前言

本节介绍 ES6 的数组的新增方法 Array.of() 该方法创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型。Array.of() 主要是弥补数组构造函数 Array() 的不足。因为参数个数的不同,导致 Array() 的重载,Array.of 不存在由于参数不同而导致的重载,并且基本上可以用来替代 Array()new Array()

2. 方法详情

2.1 基本语法

Array.of() 是创建数组的方法,它接收若干个参数,返回一个新的 Array 实例,类似 Array() 方法。

语法使用:

Array.of(element0[, element1[, ...[, elementN]]])

参数解释:

参数 描述
elementN 数组元素,可以是任意个参数,将按顺序成为返回数组中的元素

2.2 基本实例

Array.of() 会按顺序接受 N 个参数,接收的所有参数都会成为新数组的项。

Array.of(7);          // [7] 
Array.of(1, 2, 3);    // [1, 2, 3]
Array.of(undefined)   // [undefined]
Array.of(3).length    // 1

3. 对比 Array()

Array.of 的主要作用是弥补 Array() 的不足的,下面我们来看看他们有什么不同。

Array() 会根据接收的参数不同从而返回不同的数组,例如:

Array()               // []
Array(3)              // [, , ,]
Array(2, 12)          // [2, 12]

Array.of()            // []
Array.of(3)           // [3]
Array.of(2, 12, 'a')  // [2, 12, "a"]

Array 方法在没有参数、一个参数、两个参数时,返回结果都不一样。

  • 没有参数的时候返回一个空数组;
  • 有一个参数的时候,返回一个长度为此参数的空数组,并且此数组不能被迭代;
  • 有两个参数的时候,才会把参数当成数组的每一项返回;

由于参数的不同 Array 方法会进行重载,而且他们的行为也不一致,Array.of() 方法总会创建一个包含所有传入参数的数组,而不管参数的数量与类型。

4. 扩展

如果原生不支持的话,可以手动实现一个 Array.of() 方法。

if (!Array.of) {
  Array.of = function() {
    return Array.prototype.slice.call(arguments);
  };
}

使用 Arrayslice 方法把接收到的 arguments 参数,转化成数组的每一项。

5. 小结

本章讲解了 ES6 的 Array.of() 方法,该方法用于创建数组,主要为了替换 Array() 方法,弥补 Array() 方法的不足。