Signatur
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
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 ]