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 transferToFixedLength()
-Methode von ArrayBuffer
-Instanzen erstellt einen neuen nicht-resizierbaren ArrayBuffer
mit dem gleichen Byte-Inhalt wie dieser Puffer und trennt dann diesen Puffer ab.
Syntax
transferToFixedLength()
transferToFixedLength(newByteLength)
Parameter
newByteLength
-
Die
byteLength
des neuenArrayBuffer
. Standardmäßig entspricht dies derbyteLength
diesesArrayBuffer
.- Ist
newByteLength
kleiner als diebyteLength
diesesArrayBuffer
, werden die "überlaufenden" Bytes entfernt. - Ist
newByteLength
größer als diebyteLength
diesesArrayBuffer
, werden die zusätzlichen Bytes mit Nullen gefüllt.
- Ist
Rückgabewert
Ein neues ArrayBuffer
-Objekt. Der 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-resizierbar. 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-resizierbaren ArrayBuffer
. Dies bedeutet, dass newByteLength
größer als maxByteLength
sein kann, selbst wenn dieser ArrayBuffer
resizierbar ist. Siehe Übertragen von ArrayBuffers für weitere Informationen.
Beispiele
Übertragen eines resizierbaren ArrayBuffer in eine feste 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 Language Specification # sec-arraybuffer.prototype.transfertofixedlength |
Browser-Kompatibilität
BCD tables only load in the browser