The transferToFixedLength() method of ArrayBuffer instances creates a new non-resizable ArrayBuffer with the same byte content as this buffer, then detaches this buffer.
On this page
ArrayBuffer.prototype.transferToFixedLength()
Syntax
transferToFixedLength()
transferToFixedLength(newByteLength)
Parameters
-
newByteLength -
The
byteLengthof the newArrayBuffer. Defaults to thebyteLengthof thisArrayBuffer.- If
newByteLengthis smaller than thebyteLengthof thisArrayBuffer, the "overflowing" bytes are dropped. - If
newByteLengthis larger than thebyteLengthof thisArrayBuffer, the extra bytes are filled with zeros.
- If
Return value
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.
Exceptions
-
TypeError -
Thrown if this
ArrayBufferis already detached.
Description
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.
Examples
Transferring a resizable ArrayBuffer to fixed-length
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
Specifications
Browser compatibility
| 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 | |
See also
© 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