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);
};
}
使用 Array
的 slice
方法把接收到的 arguments
参数,转化成数组的每一项。
5. 小结
本章讲解了 ES6 的 Array.of()
方法,该方法用于创建数组,主要为了替换 Array()
方法,弥补 Array()
方法的不足。