Array.of()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.

Die statische Methode Array.of() erstellt eine neue Array-Instanz aus einer variablen Anzahl von Argumenten, unabhängig von Anzahl oder Typ der Argumente.

Probieren Sie es aus

Syntax

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

Parameter

element1, …, elementN

Elemente, die zum Erstellen des Arrays verwendet werden.

Rückgabewert

Eine neue Array Instanz.

Beschreibung

Der Unterschied zwischen Array.of() und dem Array()-Konstruktor liegt im Umgang mit einzelnen Argumenten: Array.of(7) erstellt ein Array mit einem einzelnen Element, 7, während Array(7) ein leeres Array mit einer length-Eigenschaft von 7 erstellt. (Das impliziert ein Array von 7 leeren Slots, nicht Slots mit tatsächlichen undefined-Werten.)

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]

Die Array.of()-Methode ist eine generische Fabrikmethode. Wenn beispielsweise eine Unterklasse von Array die of()-Methode erbt, wird die geerbte of()-Methode neue Instanzen der Unterklasse anstelle von Array-Instanzen zurückgeben. Tatsächlich kann der this-Wert jede Konstrukturfunktion sein, die ein einziges Argument akzeptiert, das die Länge des neuen Arrays darstellt, und der Konstruktor wird mit der Anzahl der an of() übergebenen Argumente aufgerufen. Die endgültige length wird erneut festgelegt, wenn alle Elemente zugewiesen sind. Wenn der this-Wert keine Konstrukturfunktion ist, wird stattdessen der einfache Array-Konstruktor verwendet.

Beispiele

Verwendung von Array.of()

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

Aufrufen von of() auf Nicht-Array-Konstruktoren

Die of()-Methode kann auf jede Konstrukturfunktion aufgerufen werden, die ein einziges Argument akzeptiert, das die Länge des neuen Arrays darstellt.

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 }

Wenn der this-Wert kein Konstruktor ist, wird ein einfaches Array-Objekt zurückgegeben.

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

Spezifikationen

Specification
ECMAScript Language Specification
# sec-array.of

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch