ArrayBuffer.prototype.transferToFixedLength()
Baseline 2024Newly 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
transferToFixedLength()
transferToFixedLength(newByteLength)
Parameter
newByteLength
-
Die
byteLength
des neuenArrayBuffer
. Standardmäßig wird diebyteLength
diesesArrayBuffer
verwendet.- Wenn
newByteLength
kleiner ist als diebyteLength
diesesArrayBuffer
, werden die "überlaufenden" Bytes entfernt. - Wenn
newByteLength
größer ist als diebyteLength
diesesArrayBuffer
, werden die zusätzlichen Bytes mit Nullen gefüllt.
- Wenn
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
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
.
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 |