ArrayBuffer
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
* Some parts of this feature may have varying levels of support.
Das ArrayBuffer
-Objekt wird verwendet, um einen generischen rohen Binärdatenpuffer darzustellen.
Es ist ein Byte-Array, das in anderen Programmiersprachen 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 bestimmten Format darstellt und verwenden dieses, um den Inhalt des Puffers zu lesen und zu schreiben.
Der ArrayBuffer()
-Konstruktor erstellt einen neuen ArrayBuffer
mit der angegebenen Länge in Bytes. Sie können auch einen Array-Puffer aus vorhandenen Daten erhalten, beispielsweise 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 Einbeziehen der maxByteLength
-Option beim Aufruf des ArrayBuffer()
-Konstruktors größenänderbar gemacht werden. Sie können abfragen, ob ein ArrayBuffer
größenänderbar ist und welche maximale Größe es hat, indem Sie auf seine resizable
- und maxByteLength
-Eigenschaften zugreifen. Sie können einem größenänderbaren ArrayBuffer
eine neue Größe zuweisen, indem Sie einen resize()
-Aufruf durchführen. Neue Bytes werden auf 0 initialisiert.
Diese Funktionen machen das Ändern der Größe von ArrayBuffer
s effizienter — andernfalls müssen Sie eine Kopie des Puffers mit neuer Größe erstellen. Es gibt JavaScript auch Gleichwertigkeit mit WebAssembly in dieser Hinsicht (Wasm lineares Gedächtnis kann mit WebAssembly.Memory.prototype.grow()
erweitert werden).
Übertragen von ArrayBuffers
ArrayBuffer
-Objekte können zwischen verschiedenen Ausführungskontexten, wie Web Workers oder Service Workers, unter Verwendung des Structured-Clone-Algorithmus übertragen werden. Dies geschieht, indem der ArrayBuffer
als übertragbares Objekt in einem Aufruf von Worker.postMessage()
oder ServiceWorker.postMessage()
übergeben wird. In reinem JavaScript können Sie auch die Besitzrechte des Speichers von einem ArrayBuffer
zu einem anderen unter Verwendung seiner transfer()
- oder transferToFixedLength()
-Methode übertragen.
Wenn ein ArrayBuffer
übertragen wird, wird seine ursprüngliche Kopie abgetrennt — das bedeutet, sie ist nicht mehr verwendbar. Zu jedem Zeitpunkt wird es nur eine Kopie des ArrayBuffer
geben, die tatsächlich Zugriff auf den zugrunde liegenden Speicher hat. Abgetrennte Puffer haben folgende Verhalten:
byteLength
wird 0 (sowohl im Puffer als auch in den zugehörigen typisierten Array-Ansichten).- Methoden wie
resize()
undslice()
werfen einenTypeError
, wenn sie aufgerufen werden. Die zugehörigen Methoden der typisierten Array-Ansichten werfen ebenfalls einenTypeError
.
Sie können überprüfen, ob ein ArrayBuffer
abgetrennt ist, indem Sie seine detached
-Eigenschaft abfragen.
Konstruktor
ArrayBuffer()
-
Erstellt ein neues
ArrayBuffer
-Objekt.
Statische Eigenschaften
ArrayBuffer[Symbol.species]
-
Die Konstruktionsfunktion, die zum Erstellen von abgeleiteten Objekten verwendet wird.
Statische Methoden
ArrayBuffer.isView()
-
Gibt
true
zurück, wennarg
eine der ArrayBuffer-Ansichten ist, wie beispielsweise typisierte Array-Objekte oder einDataView
. Gibt andernfallsfalse
zurück.
Instanzeigenschaften
Diese Eigenschaften sind auf ArrayBuffer.prototype
definiert und werden von allen ArrayBuffer
-Instanzen geteilt.
ArrayBuffer.prototype.byteLength
-
Die Größe, in Bytes, des
ArrayBuffer
. Diese wird bei der Konstruktion des Arrays festgelegt und kann nur mithilfe derArrayBuffer.prototype.resize()
-Methode geändert werden, wenn derArrayBuffer
größenänderbar ist. ArrayBuffer.prototype.constructor
-
Die Konstruktionsfunktion, die das Instanzobjekt erstellt hat. Für
ArrayBuffer
-Instanzen ist der anfängliche Wert derArrayBuffer
-Konstruktor. ArrayBuffer.prototype.detached
-
Nur lesbar. Gibt
true
zurück, wenn derArrayBuffer
abgetrennt (übertragen) wurde, oderfalse
, wenn nicht. ArrayBuffer.prototype.maxByteLength
-
Die nur-lesbare maximale Länge, in Bytes, auf die der
ArrayBuffer
geändert werden kann. Diese wird bei der Konstruktion des Arrays festgelegt und kann nicht geändert werden. ArrayBuffer.prototype.resizable
-
Nur lesbar. Gibt
true
zurück, wenn derArrayBuffer
größenänderbar ist, oderfalse
, wenn nicht. ArrayBuffer.prototype[Symbol.toStringTag]
-
Der anfängliche Wert der
[Symbol.toStringTag]
-Eigenschaft ist der String"ArrayBuffer"
. Diese Eigenschaft wird inObject.prototype.toString()
verwendet.
Instanzmethoden
ArrayBuffer.prototype.resize()
-
Ändert die Größe des
ArrayBuffer
auf die angegebene Größe, in Bytes. ArrayBuffer.prototype.slice()
-
Gibt einen neuen
ArrayBuffer
zurück, dessen Inhalt eine Kopie der Bytes diesesArrayBuffer
vonbegin
(einschließlich) bisend
(ausschließlich) ist. Wennbegin
oderend
negativ ist, bezieht es sich auf einen Index vom Ende des Arrays, anstatt vom Anfang. ArrayBuffer.prototype.transfer()
-
Erstellt einen neuen
ArrayBuffer
mit demselben Byteinhalt wie dieser Puffer, trennt dann diesen Puffer ab. ArrayBuffer.prototype.transferToFixedLength()
-
Erstellt einen neuen nicht größenänderbaren
ArrayBuffer
mit demselben Byteinhalt wie dieser Puffer, trennt dann diesen Puffer ab.
Beispiele
Erstellen eines ArrayBuffer
In diesem Beispiel erstellen wir einen 8-Byte-Puffer mit einer Int32Array
-Ansicht, die auf diesen Puffer verweist:
const buffer = new ArrayBuffer(8);
const view = new Int32Array(buffer);
Spezifikationen
Specification |
---|
ECMAScript® 2026 Language Specification # sec-arraybuffer-objects |