ES6+ Array.of()
1. 前言
本節(jié)介紹 ES6 的數(shù)組的新增方法 Array.of()
該方法創(chuàng)建一個具有可變數(shù)量參數(shù)的新數(shù)組實例,而不考慮參數(shù)的數(shù)量或類型。Array.of()
主要是彌補數(shù)組構(gòu)造函數(shù) Array()
的不足。因為參數(shù)個數(shù)的不同,導(dǎo)致 Array()
的重載,Array.of
不存在由于參數(shù)不同而導(dǎo)致的重載,并且基本上可以用來替代 Array()
或 new Array()
。
2. 方法詳情
2.1 基本語法
Array.of()
是創(chuàng)建數(shù)組的方法,它接收若干個參數(shù),返回一個新的 Array 實例,類似 Array()
方法。
語法使用:
Array.of(element0[, element1[, ...[, elementN]]])
參數(shù)解釋:
參數(shù) | 描述 |
---|---|
elementN | 數(shù)組元素,可以是任意個參數(shù),將按順序成為返回數(shù)組中的元素 |
2.2 基本實例
Array.of()
會按順序接受 N 個參數(shù),接收的所有參數(shù)都會成為新數(shù)組的項。
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()
會根據(jù)接收的參數(shù)不同從而返回不同的數(shù)組,例如:
Array() // []
Array(3) // [, , ,]
Array(2, 12) // [2, 12]
Array.of() // []
Array.of(3) // [3]
Array.of(2, 12, 'a') // [2, 12, "a"]
Array
方法在沒有參數(shù)、一個參數(shù)、兩個參數(shù)時,返回結(jié)果都不一樣。
- 沒有參數(shù)的時候返回一個空數(shù)組;
- 有一個參數(shù)的時候,返回一個長度為此參數(shù)的空數(shù)組,并且此數(shù)組不能被迭代;
- 有兩個參數(shù)的時候,才會把參數(shù)當(dāng)成數(shù)組的每一項返回;
由于參數(shù)的不同 Array
方法會進行重載,而且他們的行為也不一致,Array.of()
方法總會創(chuàng)建一個包含所有傳入?yún)?shù)的數(shù)組,而不管參數(shù)的數(shù)量與類型。
4. 擴展
如果原生不支持的話,可以手動實現(xiàn)一個 Array.of()
方法。
if (!Array.of) {
Array.of = function() {
return Array.prototype.slice.call(arguments);
};
}
使用 Array
的 slice
方法把接收到的 arguments
參數(shù),轉(zhuǎn)化成數(shù)組的每一項。
5. 小結(jié)
本章講解了 ES6 的 Array.of()
方法,該方法用于創(chuàng)建數(shù)組,主要為了替換 Array()
方法,彌補 Array()
方法的不足。