阵列缓冲区

这个阵列缓冲区对象用于表示通用原始二进制数据缓冲区。

它是一个字节数组,在其他语言中通常称为“字节数组”。不能直接操作阵列缓冲区; 相反,您可以创建一个类型化数组对象或a数据视图对象,该对象以特定格式表示缓冲区,并使用它来读取和写入缓冲区的内容。

这个数组缓冲区()构造函数创建一个新阵列缓冲区以字节为单位的给定长度。您还可以从现有数据中获取数组缓冲区,例如,从基数64字符串或从本地文件.

阵列缓冲区是一个可转让标的.

描述

调整阵列缓冲区大小

阵列缓冲区可以通过包含最大字节长度调用时的选项数组缓冲区()构造函数。您可以查询阵列缓冲区可调整大小,以及通过访问其可调整大小最大字节长度属性。您可以为可调整大小的阵列缓冲区用一个调整大小()呼叫。新字节初始化为0。

这些功能可以调整大小阵列缓冲区效率更高-否则,必须使用新大小复制缓冲区。在这方面,它还使JavaScript与WebAssembly不相上下(Wasm线性内存可以用WebAssembly网站。Memory.prototype.grow()).

传输ArrayBuffers

阵列缓冲区对象可以在不同的执行上下文之间传输,例如网络工作者服务人员,使用结构化克隆算法。通过传递阵列缓冲区作为一个可转让标的在呼叫中Worker.postMessage()服务工作者.postMessage()。在纯JavaScript中,您还可以从一个阵列缓冲区使用其传输()传输到固定长度()方法。

阵列缓冲区转让后,其原始副本变为独立的-这意味着它不再可用。在任何时候,只有一份阵列缓冲区它实际上可以访问底层内存。分离的缓冲区具有以下行为:

您可以检查阵列缓冲区被其分离独立的属性。

施工单位

数组缓冲区()

创建新的阵列缓冲区对象。

静态特性

ArrayBuffer[Symbol.species]

用于创建派生对象的构造函数。

静态方法

ArrayBuffer.isView()

退换商品真的如果参数是ArrayBuffer视图之一,例如类型化数组对象或a数据视图.退货否则。

实例属性

这些属性定义于阵列缓冲区.原型并由所有人共享阵列缓冲区实例。

阵列缓冲区.原型.byte长度

的大小(以字节为单位)阵列缓冲区。这是在构造数组时建立的,只能使用ArrayBuffer.protype.resize()方法,如果阵列缓冲区可调整大小。

阵列缓冲区.prototype.constructor

创建实例对象的构造函数。对于阵列缓冲区实例,初始值为阵列缓冲区构造函数。

阵列缓冲区.原型.详细信息

只读。退换商品真的如果阵列缓冲区已分离(转移),或如果没有。

数组缓冲区.原型.max字节长度

只读最大长度(字节)阵列缓冲区可以将大小调整为。这是在构造数组时建立的,无法更改。

阵列缓冲区.原型.可调整大小

只读。退换商品真的如果阵列缓冲区可以调整大小,或如果没有。

ArrayBuffer.prototype[Symbol.toStringTag]

的初始值[Symbol.toStringTag]属性是字符串“ArrayBuffer”。此属性用于Object.prototype.toString().

实例方法

ArrayBuffer.prototype.resize()

调整阵列缓冲区到指定的大小(字节)。

ArrayBuffer.prototype.slice()

返回一个新阵列缓冲区其内容是这个的副本阵列缓冲区的字节来自开始(含)最多结束(不含)。如果有开始结束是负数,它是指从数组末尾开始的索引,而不是从数组开头开始的索引。

ArrayBuffer.prototype.transfer()

创建新的阵列缓冲区使用与此缓冲区相同的字节内容,然后分离此缓冲区。

ArrayBuffer.prototype.transferToFixedLength()

创建新的不可调整大小的阵列缓冲区使用与此缓冲区相同的字节内容,然后分离此缓冲区。

示例

创建ArrayBuffer

在这个示例中,我们使用Int32阵列参考缓冲区的视图:

js型
const buffer=新的ArrayBuffer(8);const视图=新的Int32Array(缓冲区);

规格

规范
ECMAScript语言规范
#sec-arraybuffer对象

浏览器兼容性

BCD表仅在浏览器中加载

另请参见