Array.of()

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 2015 年 9 月以來,該特性已在各大瀏覽器中可用。

Array.of() 靜態方法根據可變數量的引數建立一個新的 Array 例項,而無論引數的數量或型別如何。

試一試

console.log(Array.of("foo", 2, "bar", true));
// Expected output: Array ["foo", 2, "bar", true]

console.log(Array.of());
// Expected output: Array []

語法

js
Array.of()
Array.of(element1)
Array.of(element1, element2)
Array.of(element1, element2, /* …, */ elementN)

引數

element1, …, elementN

用於建立陣列的元素。

返回值

一個新的 Array 例項。

描述

Array.of()Array() 建構函式之間的區別在於對單個引數的處理:Array.of(7) 建立一個包含單個元素 7 的陣列,而 Array(7) 建立一個空陣列,其 length 屬性為 7。(這意味著一個包含 7 個空槽的陣列,而不是包含實際 undefined 值的槽。)

js
Array.of(7); // [7]
Array(7); // array of 7 empty slots

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

Array.of() 方法是一個通用的工廠方法。例如,如果 Array 的子類繼承了 of() 方法,則繼承的 of() 方法將返回子類的例項而不是 Array 例項。事實上,this 值可以是任何接受單個引數(表示新陣列的長度)的建構函式,該建構函式將使用傳遞給 of() 的引數數量來呼叫。在所有元素都分配完畢後,最終的 length 將被重新設定。如果 this 值不是建構函式,則使用普通的 Array 建構函式。

示例

使用 Array.of()

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

在非陣列建構函式上呼叫 of()

of() 方法可以被呼叫在任何接受單個引數(表示新陣列的長度)的建構函式上。

js
function NotArray(len) {
  console.log("NotArray called with length", len);
}

console.log(Array.of.call(NotArray, 1, 2, 3));
// NotArray called with length 3
// NotArray { '0': 1, '1': 2, '2': 3, length: 3 }

console.log(Array.of.call(Object)); // [Number: 0] { length: 0 }

this 值不是建構函式時,將返回一個普通的 Array 物件。

js
console.log(Array.of.call({}, 1)); // [ 1 ]

規範

規範
ECMAScript® 2026 語言規範
# sec-array.of

瀏覽器相容性

另見