The transferToFixedLength() method of ArrayBuffer instances creates a new non-resizable ArrayBuffer with the same byte content as this buffer, then detaches this buffer.
The transferToFixedLength() method of ArrayBuffer instances creates a new non-resizable ArrayBuffer with the same byte content as this buffer, then detaches this buffer.
transferToFixedLength() transferToFixedLength(newByteLength)
newByteLengthThe byteLength of the new ArrayBuffer. Defaults to the byteLength of this ArrayBuffer.
newByteLength is smaller than the byteLength of this ArrayBuffer, the "overflowing" bytes are dropped.newByteLength is larger than the byteLength of this ArrayBuffer, the extra bytes are filled with zeros.A new ArrayBuffer object. Its contents are initialized to the contents of this ArrayBuffer, and extra bytes, if any, are filled with zeros. The new ArrayBuffer is always non-resizable. The original ArrayBuffer is detached.
TypeErrorThrown if this ArrayBuffer is already detached.
Unlike transfer(), transferToFixedLength() always creates a non-resizable ArrayBuffer. This means newByteLength can be larger than the maxByteLength, even if this ArrayBuffer is resizable. See transferring ArrayBuffers for more information.
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
Using transferToFixedLength, newByteLength can be larger than the maxByteLength of the original 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
| Desktop | Mobile | Server | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | Deno | Node.js | ||
transferToFixedLength |
114 | 114 | 122 | 100 | preview | 114 | 122 | 76 | No | 23.0 | 114 | No | No | |
© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/transferToFixedLength