ArrayBuffer.prototype.transferToFixedLength()
Baseline
2024
Neu verfügbar
Seit March 2024 funktioniert diese Funktion auf aktuellen Geräten und in aktuellen Browserversionen. Auf älteren Geräten oder in älteren Browsern funktioniert sie möglicherweise nicht.
Die Methode transferToFixedLength() 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
byteLengthdes neuenArrayBuffer. StandardmäÃig entspricht sie derbyteLengthdiesesArrayBuffer.- Wenn
newByteLengthkleiner ist als diebyteLengthdiesesArrayBuffer, werden die "überlaufenden" Bytes verworfen. - Wenn
newByteLengthgröÃer ist als diebyteLengthdiesesArrayBuffer, werden die zusätzlichen Bytes mit Nullen aufgefü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 aufgefüllt. Der neue ArrayBuffer ist immer nicht resizierbar. Der ursprüngliche ArrayBuffer wird getrennt.
Ausnahmen
TypeError-
Wird ausgelöst, wenn dieser
ArrayBufferbereits getrennt ist oder wenn er nur durch bestimmte Operationen getrennt werden kann. Derzeit sind nur bestimmte Web-APIs in der Lage,ArrayBuffer-Objekte mit bestimmten Trennmethoden zu erstellen, wie z.B.GPUBuffer.getMappedRange()undWebAssembly.Memory.buffer.
Beschreibung
Im Gegensatz zu transfer() erstellt transferToFixedLength() immer einen nicht-resizierbaren ArrayBuffer. Dies bedeutet, dass newByteLength gröÃer sein kann als die maxByteLength, selbst wenn dieser ArrayBuffer resizierbar ist. Siehe Ãbertragen von ArrayBuffers für weitere Informationen.
Beispiele
>Ãbertragen eines resizierbaren ArrayBuffers auf 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
Beim Verwenden von 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
| Spezifikation |
|---|
| ECMAScript® 2027 Language Specification> # sec-arraybuffer.prototype.transfertofixedlength> |