ArrayBuffer.prototype.transferToFixedLength()

Baseline 2024
Newly available

Since March 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

Die Methode transferToFixedLength() von ArrayBuffer-Instanzen erstellt einen neuen nicht-veränderbaren ArrayBuffer mit demselben Byte-Inhalt wie dieser Puffer, und trennt dann diesen Puffer ab.

Syntax

js
transferToFixedLength()
transferToFixedLength(newByteLength)

Parameter

newByteLength

Die byteLength des neuen ArrayBuffer. Standardmäßig ist dies die byteLength dieses ArrayBuffer.

  • Wenn newByteLength kleiner als die byteLength dieses ArrayBuffer ist, werden die "überlaufenden" 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 auf den Inhalt dieses ArrayBuffer initialisiert, und zusätzliche Bytes, falls vorhanden, werden mit Nullen gefüllt. Der neue ArrayBuffer ist immer nicht veränderbar. Der originale ArrayBuffer wird getrennt.

Ausnahmen

TypeError

Wird ausgelöst, wenn dieser ArrayBuffer bereits getrennt ist.

Beschreibung

Im Gegensatz zu transfer() erzeugt transferToFixedLength() immer einen nicht-veränderbaren ArrayBuffer. Das bedeutet, dass newByteLength größer sein kann als maxByteLength, selbst wenn dieser ArrayBuffer veränderbar ist. Weitere Informationen finden Sie unter Übertragen von ArrayBuffers.

Beispiele

Übertragen eines veränderbaren ArrayBuffer zu fester Länge

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

Mit transferToFixedLength kann newByteLength größer sein als maxByteLength des ursprünglichen ArrayBuffer.

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

Specification
ECMAScript® 2026 Language Specification
# sec-arraybuffer.prototype.transfertofixedlength

Browser-Kompatibilität

Siehe auch