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.prototype.transferToFixedLength()

Baseline
Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit März 2024 browserübergreifend verfügbar.

Die Methode transferToFixedLength() von ArrayBuffer-Instanzen erstellt einen neuen ArrayBuffer mit fester Länge und demselben Byte-Inhalt wie der ursprüngliche Puffer. Anschließend wird der ursprüngliche Puffer abgetrennt.

Syntax

js
transferToFixedLength()
transferToFixedLength(newByteLength)

Parameter

newByteLength

Die byteLength des neuen ArrayBuffer. Der Standardwert ist die byteLength dieses ArrayBuffer.

  • Wenn newByteLength kleiner als die byteLength dieses ArrayBuffer ist, werden die überzähligen Bytes verworfen.
  • Wenn newByteLength größer als die byteLength dieses ArrayBuffer ist, werden die zusätzlichen Bytes mit Nullen gefüllt.

Rückgabewert

Ein neues ArrayBuffer-Objekt. Sein Inhalt wird mit dem Inhalt dieses ArrayBuffer initialisiert; zusätzliche Bytes werden gegebenenfalls mit Nullen gefüllt. Der neue ArrayBuffer hat immer eine feste Länge. Der ursprüngliche ArrayBuffer wird abgetrennt.

Ausnahmen

TypeError

Wird ausgelöst, wenn dieser ArrayBuffer bereits abgetrennt wurde oder nur durch bestimmte Operationen abgetrennt werden kann. Derzeit können nur bestimmte Web-APIs ArrayBuffer-Objekte erzeugen, für deren Abtrennung bestimmte Methoden vorgesehen sind, beispielsweise GPUBuffer.getMappedRange() und WebAssembly.Memory.buffer.

Beschreibung

Anders als transfer() erstellt transferToFixedLength() immer einen ArrayBuffer mit fester Länge. Das bedeutet, dass newByteLength größer als maxByteLength sein kann, selbst wenn dieser ArrayBuffer in der Größe veränderbar ist. Weitere Informationen finden Sie unter Übertragen von ArrayBuffers.

Beispiele

Einen in der Größe veränderbaren ArrayBuffer in einen ArrayBuffer mit fester Länge übertragen

js
const buffer = new ArrayBuffer(8, { maxByteLength: 16 });
const view = new Uint8Array(buffer);
view[1] = 2;
view[7] = 4;

const buffer2 = buffer.transferToFixedLength();
console.log(buffer2.byteLength); // 8
console.log(buffer2.resizable); // false
const view2 = new Uint8Array(buffer2);
console.log(view2[1]); // 2
console.log(view2[7]); // 4

Bei Verwendung von transferToFixedLength kann newByteLength größer als die maxByteLength des ursprünglichen ArrayBuffer sein.

js
const buffer = new ArrayBuffer(8, { maxByteLength: 16 });
const view = new Uint8Array(buffer);
view[1] = 2;
view[7] = 4;

const buffer2 = buffer.transferToFixedLength(20);
console.log(buffer2.byteLength); // 20
console.log(buffer2.resizable); // false
const view2 = new Uint8Array(buffer2);
console.log(view2[1]); // 2
console.log(view2[7]); // 4

Spezifikationen

Spezifikation
ECMAScript® 2027 Language Specification
# sec-arraybuffer.prototype.transfertofixedlength

Browser-Kompatibilität

Siehe auch