ArrayBuffer() 构造函数

ArrayBuffer() 构造函数创建 ArrayBuffer 对象。

尝试一下

语法

js
new ArrayBuffer(length)
new ArrayBuffer(length, options)

备注: ArrayBuffer() 只能使用 new 构造。尝试在没有 new 的情况下调用会抛出 TypeError

参数

length

要创建的数组缓冲区的大小(以字节为单位)。

options 可选

一个对象,可以包含以下属性:

maxByteLength 可选

数组缓冲区可以调整到的最大大小,以字节为单位。

返回值

一个指定大小的新 ArrayBuffer 对象,其 maxByteLength 属性设置为指定的 maxByteLength(如果指定了该值),其内容被初始化为 0。

异常

RangeError

有下列情况之一时抛出:

  • lengthmaxByteLength 大于 Number.MAX_SAFE_INTEGER(≥ 253)或者为负数。
  • length 大于 maxByteLength

示例

创建一个 ArrayBuffer

在这个示例中,我们创建一个 8 字节的缓冲区,并使用一个 Int32Array 视图来引用该缓冲区:

js
const buffer = new ArrayBuffer(8);
const view = new Int32Array(buffer);

创建一个可以调整大小的 ArrayBuffer

在这个示例中,我们创建一个 8 字节的缓冲区,它可以调整到的最大长度为 16 字节,然后使用 resize() 调整到 12 字节:

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

buffer.resize(12);

备注: 推荐将 maxByteLength 设置为使用场景下最小的大小。它不应超过 1073741824(1GB),以减少内存溢出风险。

规范

Specification
ECMAScript Language Specification
# sec-arraybuffer-constructor

浏览器兼容性

BCD tables only load in the browser

参见