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-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
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-arraybuffer.prototype.transfertofixedlength> |
Browser-Kompatibilität
Loading…