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 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 ArrayBuffers 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:
byteLengthwird 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
truezurück, wennargeine der ArrayBuffer-Ansichten ist, wie beispielsweise typisierte Array-Objekte oder einDataView. Gibt andernfallsfalsezurü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 derArrayBuffergröß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
truezurück, wenn derArrayBufferabgetrennt (übertragen) wurde, oderfalse, wenn nicht. ArrayBuffer.prototype.maxByteLength-
Die nur-lesbare maximale Länge, in Bytes, auf die der
ArrayBuffergeändert werden kann. Diese wird bei der Konstruktion des Arrays festgelegt und kann nicht geändert werden. ArrayBuffer.prototype.resizable-
Nur lesbar. Gibt
truezurück, wenn derArrayBuffergröß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
ArrayBufferauf die angegebene Größe, in Bytes. ArrayBuffer.prototype.slice()-
Gibt einen neuen
ArrayBufferzurück, dessen Inhalt eine Kopie der Bytes diesesArrayBuffervonbegin(einschließlich) bisend(ausschließlich) ist. Wennbeginoderendnegativ ist, bezieht es sich auf einen Index vom Ende des Arrays, anstatt vom Anfang. ArrayBuffer.prototype.transfer()-
Erstellt einen neuen
ArrayBuffermit demselben Byteinhalt wie dieser Puffer, trennt dann diesen Puffer ab. ArrayBuffer.prototype.transferToFixedLength()-
Erstellt einen neuen nicht größenänderbaren
ArrayBuffermit 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> |
Browser-Kompatibilität
Loading…