SharedArrayBuffer() 构造函数

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since December 2021.

备注: SharedArrayBuffer 构造函数可能并不总是全局可用的,除非满足某些安全要求

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

尝试一下

语法

js
new SharedArrayBuffer(length)
new SharedArrayBuffer(length, options)

备注: SharedArrayBuffer() 只能通过 new 来调用。不带 new 调用会抛出 TypeError

参数

length

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

options 可选

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

maxByteLength 可选

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

返回值

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

示例

总是使用 new 运算符来创建 SharedArrayBuffer

SharedArrayBuffer 构造函数必须使用 new 运算符来构造。将 SharedArrayBuffer 构造函数作为函数,不通过 new 调用会抛出 TypeError

js
const sab = SharedArrayBuffer(1024);
// TypeError: calling a builtin SharedArrayBuffer constructor
// 不带 new 调用是不行的
js
const sab = new SharedArrayBuffer(1024);

增大可增大的 SharedArrayBuffer

在这个示例中,我们创建了一个 8 字节的缓冲区,其可增大到的最大长度为 16 字节,然后 grow() 它到 12 字节:

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

buffer.grow(12);

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

规范

Specification
ECMAScript Language Specification
# sec-sharedarraybuffer-constructor

浏览器兼容性

BCD tables only load in the browser

参见