Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

ArrayBuffer

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨Juli 2015⁩.

* Some parts of this feature may have varying levels of support.

Das ArrayBuffer-Objekt wird verwendet, um einen generischen Puffer für rohe binäre Daten darzustellen.

Es handelt sich um ein Byte-Array, das in anderen Sprachen oft als "Byte Array" bezeichnet wird. Sie können den Inhalt eines ArrayBuffer nicht direkt manipulieren; stattdessen erstellen Sie eines der typisierten Array-Objekte oder ein DataView Objekt, das den Puffer in einem spezifischen Format darstellt und verwenden dies, um den Inhalt des Puffers zu lesen und zu schreiben.

Der ArrayBuffer()-Konstruktor erstellt ein neues ArrayBuffer mit der angegebenen Länge in Bytes. Sie können auch einen Array-Puffer aus bestehenden Daten erhalten, zum Beispiel aus einem Base64-String oder aus einer lokalen Datei.

ArrayBuffer ist ein übertragbares Objekt.

Beschreibung

Ändern der Größe von ArrayBuffers

ArrayBuffer-Objekte können durch die Angabe der Option maxByteLength beim Aufrufen des ArrayBuffer() Konstruktors vergrößerbar gemacht werden. Sie können abfragen, ob ein ArrayBuffer vergrößerbar ist und welche maximale Größe es hat, indem Sie auf seine resizable und maxByteLength Eigenschaften zugreifen. Sie können einem vergrößerbaren ArrayBuffer mit einem resize() Aufruf eine neue Größe zuweisen. Neue Bytes werden auf 0 initialisiert.

Diese Funktionen machen das Ändern der Größe von ArrayBuffers effizienter — andernfalls müssen Sie eine Kopie des Puffers mit neuer Größe erstellen. Dies gibt JavaScript in dieser Hinsicht Parität mit WebAssembly (Wasm lineare Speicher können mit WebAssembly.Memory.prototype.grow() vergrößert werden).

Übertragen von ArrayBuffers

ArrayBuffer-Objekte können zwischen verschiedenen Ausführungskontexten, wie Web Workers oder Service Workers, unter Verwendung des strukturierten Klonalalgorithmus übertragen werden. Dies geschieht, indem das ArrayBuffer als übertragbares Objekt in einem Aufruf von Worker.postMessage() oder ServiceWorker.postMessage() übergeben wird. In reinem JavaScript können Sie auch die Speicherübertragung von einem ArrayBuffer zu einem anderen mit seinen transfer() oder transferToFixedLength() Methoden durchführen.

Wenn ein ArrayBuffer übertragen wird, wird seine ursprüngliche Kopie getrennt — das bedeutet, es ist nicht mehr verwendbar. Zu jedem Zeitpunkt gibt es nur eine Kopie des ArrayBuffer, die tatsächlich Zugriff auf den zugrunde liegenden Speicher hat. Getrennte Puffer haben die folgenden Verhaltensweisen:

  • byteLength wird 0 (sowohl im Puffer als auch in den zugehörigen typisierten Array-Ansichten).
  • Methoden, wie resize() und slice(), werfen einen TypeError, wenn sie aufgerufen werden. Die Methoden der zugehörigen typisierten Array-Ansichten werfen ebenfalls einen TypeError.

Sie können überprüfen, ob ein ArrayBuffer getrennt ist, indem Sie seine detached Eigenschaft prüfen.

Konstruktor

ArrayBuffer()

Erstellt ein neues ArrayBuffer-Objekt.

Statische Eigenschaften

ArrayBuffer[Symbol.species]

Die Konstruktionsfunktion, die verwendet wird, um abgeleitete Objekte zu erstellen.

Statische Methoden

ArrayBuffer.isView()

Gibt true zurück, wenn arg eine der ArrayBuffer-Ansichten ist, wie typisierte Array-Objekte oder ein DataView. Gibt andernfalls false zurück.

Instanz-Eigenschaften

Diese Eigenschaften sind auf ArrayBuffer.prototype definiert und werden von allen ArrayBuffer-Instanzen geteilt.

ArrayBuffer.prototype.byteLength

Die Größe des ArrayBuffer in Bytes. Dies wird beim Erstellen des Arrays festgelegt und kann nur geändert werden, wenn der ArrayBuffer vergrößerbar ist, durch die Verwendung der ArrayBuffer.prototype.resize() Methode.

ArrayBuffer.prototype.constructor

Die Konstruktionsfunktion, die das Instanzobjekt erstellt hat. Für ArrayBuffer-Instanzen ist der Initialwert der ArrayBuffer Konstruktor.

ArrayBuffer.prototype.detached

Schreibgeschützt. Gibt true zurück, wenn das ArrayBuffer getrennt (übertragen) wurde, oder false, wenn nicht.

ArrayBuffer.prototype.maxByteLength

Die schreibgeschützte maximale Länge, in Bytes, in die das ArrayBuffer vergrößert werden kann. Dies wird beim Erstellen des Arrays festgelegt und kann nicht geändert werden.

ArrayBuffer.prototype.resizable

Schreibgeschützt. Gibt true zurück, wenn das ArrayBuffer vergrößerbar ist, oder false, wenn nicht.

ArrayBuffer.prototype[Symbol.toStringTag]

Der Ausgangswert der [Symbol.toStringTag] Eigenschaft ist der String "ArrayBuffer". Diese Eigenschaft wird in Object.prototype.toString() verwendet.

Instanz-Methoden

ArrayBuffer.prototype.resize()

Ändert die Größe des ArrayBuffer auf die angegebene Größe in Bytes.

ArrayBuffer.prototype.slice()

Gibt ein neues ArrayBuffer zurück, dessen Inhalt eine Kopie der Bytes dieses ArrayBuffer von begin (einschließlich) bis end (ausschließlich) ist. Wenn entweder begin oder end negativ ist, bezieht es sich auf einen Index vom Ende des Arrays, im Gegensatz zu vom Anfang.

ArrayBuffer.prototype.transfer()

Erstellt ein neues ArrayBuffer mit demselben Byte-Inhalt wie dieser Puffer und trennt dann diesen Puffer.

ArrayBuffer.prototype.transferToFixedLength()

Erstellt ein neues nicht-vergrößerbares ArrayBuffer mit demselben Byte-Inhalt wie dieser Puffer und trennt dann diesen Puffer.

Beispiele

Erstellen eines ArrayBuffer

In diesem Beispiel erstellen wir einen 8-Byte-Puffer mit einer Int32Array-Ansicht, die auf den Puffer verweist:

js
const buffer = new ArrayBuffer(8);
const view = new Int32Array(buffer);

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# sec-arraybuffer-objects

Browser-Kompatibilität

Siehe auch