ArrayBuffer.prototype.resize()

Baseline 2024
Newly available

Since July 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

ArrayBuffer 实例的 resize() 方法将 ArrayBuffer 调整为指定的大小,以字节为单位。

尝试一下

const buffer = new ArrayBuffer(8, { maxByteLength: 16 });

console.log(buffer.byteLength);
// Expected output: 8

buffer.resize(12);

console.log(buffer.byteLength);
// Expected output: 12

语法

js
resize(newLength)

参数

newLength

ArrayBuffer 要调整到的新的长度,以字节为单位。

返回值

无(undefined)。

异常

TypeError

如果 ArrayBuffer 已分离或不可调整大小,则抛出该错误。

RangeError

如果 newLength 大于该 ArrayBuffermaxByteLength,则抛出该错误。

描述

resize() 方法将 ArrayBuffer 调整为 newLength 参数指定的大小,前提是该 ArrayBuffer可调整大小的并且新的大小小于或等于该 ArrayBuffermaxByteLength。新字节被初始化为 0。

请注意,你可以使用 resize() 来缩小和增大 ArrayBuffer——即使 newLength 小于 ArrayBuffer 的当前 byteLength

示例

使用 resize()

在这个示例中,我们创建一个 8 字节缓冲区,该缓冲区可调整大小到的最大长度是 16 字节,然后检查其 resizable 属性,如果 resizable 返回 true 则调整其大小:

js
const buffer = new ArrayBuffer(8, { maxByteLength: 16 });

if (buffer.resizable) {
  console.log("缓冲区大小是可调整的!");
  buffer.resize(12);
}

规范

Specification
ECMAScript® 2025 Language Specification
# sec-arraybuffer.prototype.resize

浏览器兼容性

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
resize

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support

参见