JavaScript

JavaScript 知识量:26 - 101 - 483

5.2 定型数组><

什么是定型数组- 5.2.1 -

JavaScript定型数组(Typed Arrays)是一种用于处理二进制数据的机制,它们提供了一种更高效的方式来存储和操作原始二进制数据。定型数组是一种类似数组的对象,用于表示一种特定类型的连续元素集合。它们是基于ArrayBuffer对象创建的,ArrayBuffer对象表示一个原始的二进制数据缓冲区。

定型数组的类型包括:

  • Int8Array:一个8位有符号整数数组。

  • Uint8Array:一个8位无符号整数数组。

  • Uint8ClampedArray:一个8位无符号整数数组,但它将数值限制在0-255范围内。

  • Int16Array:一个16位有符号整数数组。

  • Uint16Array:一个16位无符号整数数组。

  • Int32Array:一个32位有符号整数数组。

  • Uint32Array:一个32位无符号整数数组。

  • Float32Array:一个32位浮点数数组。

  • Float64Array:一个64位浮点数数组。

定型数组使得JavaScript可以更高效地处理二进制数据,尤其在涉及大量数据处理、图像处理、文件流操作等场景下。

ArrayBuffer- 5.2.2 -

ArrayBuffer是JavaScript中的一种数据类型,用于表示一个通用的、固定长度的原始二进制数据缓冲区。ArrayBuffer本身并不能直接操作,而是需要通过类型数组对象或DataView对象来读写。

创建一个ArrayBuffer:

var buffer = new ArrayBuffer(16); // 创建一个长度为16字节的ArrayBuffer

可以通过类型数组对象(如Int8Array, Uint8Array, Float32Array等)来读写ArrayBuffer的内容:

var int8View = new Int8Array(buffer); // 创建一个Int8Array视图来读写buffer      
int8View[0] = 127; // 在buffer的第一个字节写入127

也可以使用DataView对象来进行更复杂的读写操作:

var view = new DataView(buffer); // 创建一个DataView视图来读写buffer      
view.setInt8(0, 127); // 在buffer的第一个字节写入127

ArrayBuffer常用于与Web APIs(如File API、XMLHttpRequest等)进行交互,以及用于处理Canvas、WebGL等操作。

DataView- 5.2.3 -

DataView是一种用于读写ArrayBuffer对象的底层接口。它提供了一种灵活的方式来操作多种数值类型,包括有符号和无符号整数,以及浮点数。

DataView构造函数接受一个ArrayBuffer对象作为参数,然后可以基于这个ArrayBuffer对象创建不同的视图来进行读写操作。例如:

var buffer = new ArrayBuffer(16);  
var view = new DataView(buffer);

使用DataView,可以以不同的数值类型来读写ArrayBuffer的内容。例如:

view.setInt8(0, 127); // 在buffer的第一个字节写入127  
var value = view.getInt8(0); // 读取buffer的第一个字节

DataView提供了各种方法来读写不同类型的数据,包括读取和写入不同大小和字节序的整数和浮点数。这使得DataView在处理二进制数据时非常灵活和强大。