ArrayBuffer.prototype.transferToFixedLength()
transferToFixedLength() 方法用於 ArrayBuffer 例項,它會建立一個具有相同位元組內容的新、不可調整大小的 ArrayBuffer,然後分離(detach)原始緩衝區。
語法
js
transferToFixedLength()
transferToFixedLength(newByteLength)
引數
newByteLength-
新
ArrayBuffer的byteLength。預設為此ArrayBuffer的byteLength。- 如果
newByteLength小於此ArrayBuffer的byteLength,則會丟棄“溢位”的位元組。 - 如果
newByteLength大於此ArrayBuffer的byteLength,則額外的位元組將用零填充。
- 如果
返回值
一個新的 ArrayBuffer 物件。其內容初始化為此 ArrayBuffer 的內容,並且任何額外的位元組將用零填充。新 ArrayBuffer 始終是不可調整大小的。原始 ArrayBuffer 將被分離。
異常
TypeError-
如果此
ArrayBuffer已被分離,或者它只能透過指定的操作來分離,則會丟擲此錯誤。目前,只有某些 Web API 能夠建立具有指定分離方法的ArrayBuffer物件,例如GPUBuffer.getMappedRange()和WebAssembly.Memory.buffer。
描述
與 transfer() 不同,transferToFixedLength() 始終建立一個不可調整大小的 ArrayBuffer。這意味著 newByteLength 可以大於 maxByteLength,即使此 ArrayBuffer 是可調整大小的。有關更多資訊,請參閱 Transferring ArrayBuffers。
示例
將可調整大小的 ArrayBuffer 傳輸到固定長度
js
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
使用 transferToFixedLength,newByteLength 可以大於原始 ArrayBuffer 的 maxByteLength。
js
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
規範
| 規範 |
|---|
| ECMAScript® 2026 語言規範 # sec-arraybuffer.prototype.transfertofixedlength |
瀏覽器相容性
載入中…