MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

ArrayBuffer对象被用来表示一个通用的,固定长度的二进制数据缓冲区。你不能直接操纵ArrayBuffer的内容相反,你应该创建一个表示特定格式的buffer的类型化数组对象(typed array objects)或数据视图对象DataView 来对buffer的内容进行读取和写入操作。

语法

new ArrayBuffer(length)

参数

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

返回值

一个新的拥有指定大小的ArrayBuffer对象。它的内容都被初始化为0。

描述

ArrayBuffer 构造函数创建一个指定了字节长度的新ArrayBuffer对象。

从现有数据中获取数组缓冲区

属性

ArrayBuffer.length
ArrayBuffer构造函数的length属性,它的值是1
get ArrayBuffer[@@species]
用于创建派生对象的构造函数
ArrayBuffer.prototype
允许给所有ArrayBuffer对象添加属性

方法

ArrayBuffer.isView(arg)
如果参数是ArrayBuffer的视图实例就返回true,例如 typed array objects 或 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是负数,则指的是从数组末尾开始的索引,而不是从头开始。

ArrayBuffer.slice()
ArrayBuffer.prototype.slice()功能一样。

例子

下面的例子中,我们创建了一个8字节的缓冲区,并使用一个Int32Array 进行呈现:

var buffer = new ArrayBuffer(8);
var view   = new Int32Array(buffer);

规范

Specification Status Comment
Typed Array Specification Obsolete Superseded by ECMAScript 6.
ECMAScript 2015 (6th Edition, ECMA-262)
ArrayBuffer
Standard Initial definition in an ECMA standard. Specified that new is required.
ECMAScript Latest Draft (ECMA-262)
ArrayBuffer
Draft  

浏览器兼容性

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 7.0 4.0 (2) 10 11.6 5.1
ArrayBuffer() without new throws ? 44 (44) ? ? ?
ArrayBuffer.slice() 未实现 (Yes)
未实现 53 (53)
未实现 未实现 ?
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support 4.0 (Yes) 4.0 (2) 10 11.6 4.2
ArrayBuffer() without new throws ? ? 44.0 (44) ? ? ?
ArrayBuffer.slice() 未实现 未实现 (Yes)
未实现 53.0 (53)
未实现 未实现 ?

兼容性提醒

从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);

相关链接

文档标签和贡献者

标签: 
 此页面的贡献者: kameii, liyongleihf2006, maicss, teoli, Jijie.Chen, ziyunfei
 最后编辑者: kameii,