ArrayBuffer[Symbol.species]
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 Accessor-Eigenschaft ArrayBuffer[Symbol.species]
gibt den Konstruktor zurück, der verwendet wird, um Rückgabewerte aus Array-Buffer-Methoden zu konstruieren.
Warnung:
Die Existenz von [Symbol.species]
ermöglicht die Ausführung von beliebigem Code und kann Sicherheitslücken schaffen. Sie erschwert auch bestimmte Optimierungen erheblich. Entwickler untersuchen ob dieses Feature entfernt werden sollte. Vermeiden Sie, wenn möglich, die Abhängigkeit davon.
Syntax
ArrayBuffer[Symbol.species]
Rückgabewert
Der Wert des Konstruktors (this
), auf dem get [Symbol.species]
aufgerufen wurde. Der Rückgabewert wird verwendet, um Rückgabewerte aus Array-Buffer-Methoden zu konstruieren, die neue Array-Buffer erstellen.
Beschreibung
Die [Symbol.species]
Accessor-Eigenschaft gibt den Standardkonstruktor für ArrayBuffer
-Objekte zurück. Konstruktoren von Unterklassen können ihn überschreiben, um die Zuweisung des Konstruktors zu ändern. Die Standardimplementierung ist im Wesentlichen:
// Hypothetical underlying implementation for illustration
class ArrayBuffer {
static get [Symbol.species]() {
return this;
}
}
Aufgrund dieser polymorphen Implementierung würde [Symbol.species]
von abgeleiteten Unterklassen standardmäßig auch den Konstruktor selbst zurückgeben.
class SubArrayBuffer extends ArrayBuffer {}
SubArrayBuffer[Symbol.species] === SubArrayBuffer; // true
Beim Aufrufen von Array-Buffer-Methoden, die das bestehende Objekt nicht ändern, sondern eine neue Array-Buffer-Instanz zurückgeben (zum Beispiel slice()
), wird constructor[Symbol.species]
des Objekts aufgerufen. Der zurückgegebene Konstruktor wird verwendet, um den Rückgabewert der Array-Buffer-Methode zu konstruieren.
Beispiele
Species in gewöhnlichen Objekten
Die [Symbol.species]
-Eigenschaft gibt die Standard-Konstruktorfunktion zurück, die für ArrayBuffer
der ArrayBuffer
-Konstruktor ist.
ArrayBuffer[Symbol.species]; // function ArrayBuffer()
Species in abgeleiteten Objekten
In einer Instanz einer benutzerdefinierten ArrayBuffer
-Unterklasse, wie MyArrayBuffer
, ist die MyArrayBuffer
-Species der MyArrayBuffer
-Konstruktor. Es könnte jedoch gewünscht sein, dies zu überschreiben, um in abgeleiteten Klassenmethoden Eltern-ArrayBuffer
-Objekte zurückzugeben:
class MyArrayBuffer extends ArrayBuffer {
// Overwrite MyArrayBuffer species to the parent ArrayBuffer constructor
static get [Symbol.species]() {
return ArrayBuffer;
}
}
Spezifikationen
Specification |
---|
ECMAScript® 2026 Language Specification # sec-get-arraybuffer-%symbol.species% |