Start · Sprachen · JavaScript · Referenz · Array.of()

Array.of()

Methode

Die statische Methode <code>Array.of()</code> erzeugt eine neue <code>Array</code>-Instanz aus einer variablen Anzahl von Argumenten, unabhängig von Anzahl oder Typ.

Kategorie: method-property

Signatur

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

Beschreibung

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

Der Unterschied zwischen Array.of() und dem Array()-Konstruktor liegt im Umgang mit einzelnen Argumenten: Array.of(7) erzeugt ein Array mit einem einzelnen Element 7, während Array(7) ein leeres Array mit einer length-Eigenschaft von 7 erzeugt. (Das bedeutet ein Array mit 7 leeren Slots, nicht mit Slots, die tatsächlich undefined-Werte enthalten.)

Die Methode Array.of() ist eine generische Factory-Methode. Wenn beispielsweise eine Unterklasse von Array die Methode of() erbt, gibt die geerbte of()-Methode neue Instanzen der Unterklasse zurück statt Array-Instanzen. Tatsächlich kann der this-Wert jede Konstruktorfunktion sein, die ein einzelnes Argument akzeptiert, das die Länge des neuen Arrays repräsentiert, und der Konstruktor wird mit der Anzahl der an of() übergebenen Argumente aufgerufen. Die endgültige length wird erneut gesetzt, wenn alle Elemente zugewiesen sind. Wenn der this-Wert keine Konstruktorfunktion ist, wird stattdessen der einfache Array-Konstruktor verwendet.

Parameter

Name Typ Default Beschreibung
$element1, …, elementN any Elemente, die zum Erzeugen des Arrays verwendet werden.

Rückgabewert

Typ
Array
Beschreibung
Eine neue Array-Instanz.

Beispiele

Array.of() verwenden

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

of() auf Nicht-Array-Konstruktoren aufrufen

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 }

Nicht-Konstruktor als this

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