ArrayBuffer 是 ES6 引入的一种二进制数据缓冲区对象,用于在内存中存储二进制数据。ArrayBuffer 本身不能直接读写数据,但它提供了一种机制,使得可以通过视图(views)来访问和操作底层的二进制数据。这些视图包括 DataView、Int8Array、Uint8Array 等。

以下是一个简单的使用 ArrayBuffer 的示例:
// 创建一个包含 8 个字节的 ArrayBuffer
const buffer = new ArrayBuffer(8);

// 使用 Int32Array 视图来读写 ArrayBuffer 中的数据
const view = new Int32Array(buffer);

// 将值 42 存储到 ArrayBuffer 中
view[0] = 42;

// 读取 ArrayBuffer 中的值
console.log(view[0]); // 输出: 42

在这个例子中,我们首先创建了一个包含 8 个字节的 ArrayBuffer 对象。然后,通过 Int32Array 视图来读写这个缓冲区中的数据。Int32Array 视图表示每个元素都是 32 位整数,因此我们可以将 42 存储在第一个位置上,并通过视图读取。

ArrayBuffer 在处理二进制数据时非常高效,特别适用于与底层数据交互的场景,比如网络通信、文件读写等。

创建 ArrayBuffer 对象:

1. 通过长度创建:
   const buffer = new ArrayBuffer(16); // 创建一个包含 16 个字节的 ArrayBuffer

2. 通过已有的 ArrayBuffer 创建新的 ArrayBuffer:
   const existingBuffer = new ArrayBuffer(8);
   const newBuffer = new ArrayBuffer(existingBuffer);

使用 ArrayBuffer 视图:

1. TypedArray 视图:
   const buffer = new ArrayBuffer(8);
   const int32View = new Int32Array(buffer);
   int32View[0] = 42;
   console.log(int32View[0]); // 输出: 42

2. DataView 视图:
   const buffer = new ArrayBuffer(8);
   const dataView = new DataView(buffer);
   dataView.setInt32(0, 42);
   console.log(dataView.getInt32(0)); // 输出: 42

ArrayBuffer 提供了一种灵活的机制,使得 JavaScript 能够更好地处理底层的二进制数据。在涉及到直接操作二进制数据的情况下,使用 ArrayBuffer 及其视图是一种高效且便捷的方式。


转载请注明出处:http://www.zyzy.cn/article/detail/4689/ES6