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 demselben Byte-Inhalt wie dieser Puffer, und trennt dann diesen Puffer ab.
Syntax
transferToFixedLength()
transferToFixedLength(newByteLength)
Parameter
newByteLength
-
Die
byteLength
des neuenArrayBuffer
. Standardmäßig ist dies diebyteLength
diesesArrayBuffer
.- Wenn
newByteLength
kleiner als diebyteLength
diesesArrayBuffer
ist, werden die "überlaufenden" Bytes verworfen. - Wenn
newByteLength
größer als diebyteLength
diesesArrayBuffer
ist, werden die zusätzlichen Bytes mit Nullen gefüllt.
- Wenn
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
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
.
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 |