非常教程

JavaScript参考手册

数列缓冲 | ArrayBuffer

ArrayBuffer

ArrayBuffer 对象用来表示通用的、固定长度的原始二进制数据缓冲区。ArrayBuffer 不能直接操作,而是要通过类型数组对象或DataView对象来操作,它们会将缓冲区中的数据表示为特定的格式,并通过这些格式来读写缓冲区的内容。

语法

new ArrayBuffer(length)

参数

length要创建的ArrayBuffer的大小,单位为字节。

返回值

一个指定大小的ArrayBuffer对象,其内容被初始化为 0。

异常

如果 length 大于 Number.MAX_SAFE_INTEGER(>= 2 ** 53)或为负数,则抛出一个 RangeError  异常。

描述

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

以现有数据获取 ArrayBuffer

  • 从 Base64 字符串
  • 从本地文件

属性

ArrayBuffer.lengthArrayBuffer 构造函数的 length 属性,其值为1。

get ArrayBuffer[@@species]返回 ArrayBuffer 的构造函数。

ArrayBuffer.prototype通过 ArrayBuffer 的原型对象可以为所有 ArrayBuffer 对象添加属性。

方法

ArrayBuffer.isView(arg)如果参数是 ArrayBuffer 的视图实例则返回true,例如类型数组对象 或 DataView对象;否则返回false

ArrayBuffer.transfer(oldBuffer [, newByteLength])

返回一个新的 ArrayBuffer 对象,其内容取自oldBuffer中的数据,并且根据newByteLength的大小对数据进行截取或补 0。

ArrayBuffer.slice()ArrayBuffer.prototype.slice()功能相同。

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)The definition of 'ArrayBuffer' in that specification.

Standard

在 ECMA 标准中的初始定义。规定了必须通过 new 来调用构造函数

ECMAScript Latest Draft (ECMA-262)The definition of 'ArrayBuffer' in that specification.

Living Standard

浏览器兼容性

Feature

Chrome

Edge

Firefox (Gecko)

Internet Explorer

Opera

Safari

Basic support

7.0

(Yes)

4.0 (2)

10

11.6

5.1

ArrayBuffer() without new throws

?

?

44 (44)

?

?

?

ArrayBuffer.slice()

No support

(Yes)

(Yes) No support 53 (53)

No support

No support

?

Feature

Android

Chrome for Android

Edge

Firefox Mobile (Gecko)

IE Mobile

Opera Mobile

Safari Mobile

Basic support

4.0

(Yes)

(Yes)

4.0 (2)

10

11.6

4.2

ArrayBuffer() without new throws

?

?

?

44.0 (44)

?

?

?

ArrayBuffer.slice()

No support

No support

(Yes)

(Yes) No support 53.0 (53)

No support

No support

?

JavaScript

JavaScript 是一种高级编程语言,通过解释执行,是一门动态类型,面向对象(基于原型)的解释型语言。它已经由ECMA(欧洲电脑制造商协会)通过 ECMAScript 实现语言的标准化。它被世界上的绝大多数网站所使用,也被世界主流浏览器( Chrome、IE、FireFox、Safari、Opera )支持。JavaScript 是一门基于原型、函数先行的语言,是一门多范式的语言,它支持面向对象编程,命令式编程,以及函数式编程。它提供语法来操控文本、数组、日期以及正则表达式等,不支持 I/O,比如网络