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 dem gleichen Byte-Inhalt wie dieser Puffer und trennt anschließend diesen Puffer ab.

Syntax

js
transferToFixedLength()
transferToFixedLength(newByteLength)

Parameter

newByteLength

Die byteLength des neuen ArrayBuffer. Standardmäßig wird die byteLength dieses ArrayBuffer verwendet.

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

Rückgabewert

Ein neues ArrayBuffer-Objekt. Sein Inhalt wird mit dem Inhalt dieses ArrayBuffer initialisiert, und zusätzliche Bytes, falls vorhanden, werden mit Nullen gefüllt. Der neue ArrayBuffer ist immer nicht veränderbar. Der ursprüngliche ArrayBuffer wird abgetrennt.

Ausnahmen

TypeError

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

Beschreibung

Im Gegensatz zu transfer() erstellt 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 die 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