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 Array von Bytes, 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 typed array objects oder ein DataView
-Objekt, das den Puffer in einem spezifischen Format darstellt, und verwenden dieses, um den Inhalt des Puffers zu lesen und zu schreiben.
Der ArrayBuffer()
-Konstruktor erzeugt einen neuen ArrayBuffer
mit der angegebenen Länge in Bytes. Sie können auch einen Array-Puffer aus bestehenden Daten erhalten, zum Beispiel von einem Base64-String oder von einer lokalen Datei.
ArrayBuffer
ist ein übertragbares Objekt.
Beschreibung
Resizing von ArrayBuffers
ArrayBuffer
-Objekte können durch das Hinzufügen der Option maxByteLength
beim Aufruf 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 gesetzt.
Diese Funktionen machen das Vergrößern von ArrayBuffer
s effizienter – andernfalls müssten Sie eine Kopie des Puffers mit einer neuen Größe erstellen. Es gibt JavaScript auch Parität mit WebAssembly in dieser Hinsicht (das lineare Speicher von Wasm kann mit WebAssembly.Memory.prototype.grow()
vergrößert werden).
Übertragung von ArrayBuffers
ArrayBuffer
-Objekte können zwischen verschiedenen Ausführungskontexten, wie Web Workers oder Service Workers, unter Verwendung des strukturierten Klon-Algorithmus übertragen werden. Dies erfolgt durch das Übergeben des ArrayBuffer
als übertragbares Objekt in einem Aufruf von Worker.postMessage()
oder ServiceWorker.postMessage()
. In reinem JavaScript können Sie auch das Eigentum des Speichers von einem ArrayBuffer
zu einem anderen übertragen, indem Sie dessen transfer()
- oder transferToFixedLength()
-Methode verwenden.
Wenn ein ArrayBuffer
übertragen wird, wird seine ursprüngliche Kopie losgelöst — das bedeutet, dass es nicht mehr verwendbar ist. Zu jeder Zeit wird es nur eine Kopie des ArrayBuffer
geben, die tatsächlich Zugriff auf den zugrunde liegenden Speicher hat. Losgelöste Puffer haben das 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. Auch die Methoden der zugehörigen typisierten Array-Ansichten werfen einenTypeError
.
Sie können überprüfen, ob ein ArrayBuffer
losgelöst ist, indem Sie seine detached
-Eigenschaft abfragen.
Konstruktor
ArrayBuffer()
-
Erzeugt ein neues
ArrayBuffer
-Objekt.
Statische Eigenschaften
ArrayBuffer[Symbol.species]
-
Die Konstruktorfunktion, die zum Erstellen abgeleiteter Objekte verwendet wird.
Statische Methoden
ArrayBuffer.isView()
-
Gibt
true
zurück, wennarg
eine der ArrayBuffer-Ansichten ist, wie z.B. typed array objects oder einDataView
. Gibt andernfallsfalse
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. Diese wird festgelegt, wenn das Array konstruiert wird und kann nur geändert werden, wenn derArrayBuffer
vergrößerbar ist, durch die MethodeArrayBuffer.prototype.resize()
. ArrayBuffer.prototype.constructor
-
Die Konstruktorfunktion, die das Instanz-Objekt erstellt hat. Für
ArrayBuffer
-Instanzen ist der Anfangswert derArrayBuffer
-Konstruktor. ArrayBuffer.prototype.detached
-
Nur-lesend. Gibt
true
zurück, wenn derArrayBuffer
losgelöst (übertragen) wurde, oderfalse
, wenn nicht. ArrayBuffer.prototype.maxByteLength
-
Die nur-lesbare maximale Länge in Bytes, auf die der
ArrayBuffer
vergrößert werden kann. Diese wird festgelegt, wenn das Array konstruiert wird und kann nicht geändert werden. ArrayBuffer.prototype.resizable
-
Nur-lesend. Gibt
true
zurück, wenn derArrayBuffer
vergrößerbar ist, oderfalse
, wenn nicht. ArrayBuffer.prototype[Symbol.toStringTag]
-
Der Anfangswert der
[Symbol.toStringTag]
-Eigenschaft ist der String"ArrayBuffer"
. Diese Eigenschaft wird inObject.prototype.toString()
verwendet.
Instanz-Methoden
ArrayBuffer.prototype.resize()
-
Vergrößert den
ArrayBuffer
auf die angegebene Größe in Bytes. ArrayBuffer.prototype.slice()
-
Gibt einen neuen
ArrayBuffer
zurück, dessen Inhalt eine Kopie von den Bytes diesesArrayBuffer
vonbegin
(einschließlich) bisend
(ausschließlich) ist. Wennbegin
oderend
negativ ist, bezieht es sich auf einen Index vom Ende des Arrays, im Gegensatz zum Anfang. ArrayBuffer.prototype.transfer()
-
Erzeugt einen neuen
ArrayBuffer
mit demselben Byte-Inhalt wie dieser Puffer und löst dann diesen Puffer los. ArrayBuffer.prototype.transferToFixedLength()
-
Erzeugt einen neuen, nicht-vergrößerbaren
ArrayBuffer
mit demselben Byte-Inhalt wie dieser Puffer und löst dann diesen Puffer los.
Beispiele
Erstellen eines ArrayBuffer
In diesem Beispiel erstellen wir einen 8-Byte-Puffer mit einer Int32Array
-Ansicht, die auf den Puffer verweist:
const buffer = new ArrayBuffer(8);
const view = new Int32Array(buffer);
Spezifikationen
Specification |
---|
ECMAScript® 2025 Language Specification # sec-arraybuffer-objects |
Browser-Kompatibilität
Report problems with this compatibility data on GitHubdesktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ArrayBuffer | ||||||||||||||
[Symbol.species] | ||||||||||||||
ArrayBuffer() constructor | ||||||||||||||
maxByteLength option | ||||||||||||||
byteLength | ||||||||||||||
detached | ||||||||||||||
isView | ||||||||||||||
maxByteLength | ||||||||||||||
resizable | ||||||||||||||
resize | ||||||||||||||
slice | ||||||||||||||
transfer | ||||||||||||||
transferToFixedLength |
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support
- No support
- No support
- See implementation notes.