ArrayBuffer

ArrayBuffer

数组缓冲区(array buffer)是内存中包含一定数量字节的区域,而所有的类型化数组都基于数组缓冲区。 使用 ArrayBuffer 构造器来创建一个数组缓冲区:

const buf = new ArrayBuffer(32);

console.log(buf);
// ArrayBuffer(21) {}

buf.toString();
// "[object ArrayBuffer]"

生成了一段 32 字节的内存区域,每个字节的值默认都是 0。

ArrayBuffer方法

ArrayBuffer.prototype.byteLength

返回所分配的内存区域的字节长度。

ArrayBuffer.prototype.slice()

允许将内存区域的一部分,拷贝生成一个新的ArrayBuffer对象。

ArrayBuffer.isView()

静态方法,判断是否为ArrayBuffer的视图实例。

DataView

为了读写这段内容,需要为它提供视图。DataView视图的创建,需要提供ArrayBuffer对象实例作为参数。

TypedArray

还有一种是统称TypedArray的视图,包含如下构造函数:

数据类型

构造函数

字节长度

含义

对应的 C 语言类型

Int8

Int8Array

1

8 位带符号整数

signed char

Uint8

Uint8Array

1

8 位不带符号整数

unsigned char

Uint8C

Uint8ClampedArray

1

8 位不带符号整数(自动过滤溢出)

unsigned char

Int16

Int16Array

2

16 位带符号整数

short

Uint16

Uint16Array

2

16 位不带符号整数

unsigned short

Int32

Int32Array

4

32 位带符号整数

int

Uint32

Uint32Array

4

32 位不带符号的整数

unsigned int

Float32

Float32Array

4

32 位浮点数

float

Float64

Float64Array

8

64 位浮点数

double

构造函数方法

TypedArray(buffer, byteOffset=0, length?)

参数说明:

  • 第一个参数(必需):视图对应的底层ArrayBuffer对象。

  • 第二个参数(可选):视图开始的字节序号,默认从 0 开始。

  • 第三个参数(可选):视图包含的数据个数,默认直到本段内存区域结束。

TypedArray(length)

上图生成了8个成员(共64字节),并对部分成员赋值。

TypedArray(typedArray)

此方法只是复制参数数组的值,内存不一样。

使用x.buffer会基于同一内存。

Last updated

Was this helpful?