ArrayBuffer - JavaScript 编辑
ArrayBuffer
对象用来表示通用的、固定长度的原始二进制数据缓冲区。
它是一个字节数组,通常在其他语言中称为 byte array。
你不能直接操作 ArrayBuffer
的内容,而是要通过类型数组对象或 DataView
对象来操作,它们会将缓冲区中的数据表示为特定的格式,并通过这些格式来读写缓冲区的内容。
// create an ArrayBuffer with a size in bytes const buffer = new ArrayBuffer(8); console.log(buffer.byteLength); // expected output: 8
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
语法
new ArrayBuffer(length)
参数
length
- 要创建的
ArrayBuffer
的大小,单位为字节。
返回值
一个指定大小的 ArrayBuffer
对象,其内容被初始化为 0。
异常
如果 length 大于 Number.MAX_SAFE_INTEGER
(>= 2 ** 53)或为负数,则抛出一个 RangeError
异常。
描述
ArrayBuffer
构造函数用来创建一个指定字节长度的 ArrayBuffer
对象。
以现有数据获取 ArrayBuffer
属性
ArrayBuffer.length
- ArrayBuffer 构造函数的 length 属性,其值为1。
ArrayBuffer.prototype.byteLength
- 只读属性,表示
ArrayBuffer
的byte的大小,在ArrayBuffer构造完成时生成,不可改变。
get ArrayBuffer[@@species]
- 返回 ArrayBuffer 的构造函数。
ArrayBuffer.prototype
- 通过 ArrayBuffer 的原型对象可以为所有 ArrayBuffer 对象添加属性。
方法
ArrayBuffer.isView(arg)
- 如果参数是 ArrayBuffer 的视图实例则返回
true
,例如 类型数组对象 或DataView
对象;否则返回false
。 ArrayBuffer.transfer(oldBuffer [, newByteLength])
返回一个新的 ArrayBuffer 对象,其内容取自
oldBuffer
中的数据,并且根据newByteLength
的大小对数据进行截取或补 0。
ArrayBuffer 实例
所有 ArrayBuffer
实例都会从 ArrayBuffer.prototype
继承属性和方法。
属性
- ArrayBuffer.prototype.constructor
- 指定函数,它创建一个对象的原型。其初始值是标准ArrayBuffer内置构造函数。
ArrayBuffer.prototype.byteLength
只读- 数组的字节大小。在数组创建时确定,并且不可变更。只读。
方法
ArrayBuffer.prototype.slice()
- 返回一个新的
ArrayBuffer
,它的内容是这个ArrayBuffer
的字节副本,从begin(包括),到end(不包括)。如果begin或end是负数,则指的是从数组末尾开始的索引,而不是从头开始。
示例
下面的例子创建了一个 8 字节的缓冲区,并使用一个 Int32Array
来引用它:
var buffer = new ArrayBuffer(8);
var view = new Int32Array(buffer);
规范
Specification | Status | Comment |
---|---|---|
Typed Array Specification | Obsolete | 已被 ECMAScript 6 中的 ArrayBuffer 取代 |
ECMAScript 2015 (6th Edition, ECMA-262) ArrayBuffer | Standard | 在 ECMA 标准中的初始定义。规定了必须通过 new 来调用构造函数 |
ECMAScript (ECMA-262) ArrayBuffer | Living Standard |
浏览器兼容性
BCD tables only load in the browser
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
兼容性提醒
从 ECMAScript 2015 开始,ArrayBuffer
对象需要用 new
运算符创建。如果调用构造函数时没有使用 new
,将会抛出 TypeError
异常。
var dv = ArrayBuffer(10);
// TypeError: calling a builtin ArrayBuffer constructor
// without new is forbidden
var dv = new ArrayBuffer(10);
相关链接
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论