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