×

JavaScript标准内置对象:ArrayBuffer

作者:Terry2020.12.16来源:Web前端之家浏览:4918评论:0
关键词:jsArrayBuffer

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

输出结果:

8

语法

new ArrayBuffer(length)

参数

  • length

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

返回值

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

异常

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

描述

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

以现有数据获取 ArrayBuffer

  • 从 Base64 字符串

  • 从本地文件

属性

  • 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是负数,则指的是从数组末尾开始的索引,而不是从头开始。

  • ArrayBuffer.slice()  

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

示例

下面的例子创建了一个 8 字节的缓冲区,并使用一个 Int32Array 来引用它:

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

规范

SpecificationStatusComment
Typed Array SpecificationObsolete已被 ECMAScript 6 中的 ArrayBuffer 取代
ECMAScript 2015 (6th Edition, ECMA-262)
ArrayBuffer
Standard在 ECMA 标准中的初始定义。规定了必须通过 new 来调用构造函数
ECMAScript (ECMA-262)
ArrayBuffer
Living Standard


您的支持是我们创作的动力!
温馨提示:本文作者系Terry ,经Web前端之家编辑修改或补充,转载请注明出处和本文链接:
https://jiangweishan.com/article/js20201216a1.html

网友评论文明上网理性发言 已有0人参与

发表评论: