javascript类型化数组TypedArray学习日记(ArrayBuffer、DataView、Uint8Array…)

什么是类型化数组?

首先,下面这是常见的js数组:

var arr = new Array(5)

Javascript的数组的强大以及全能,给我们带来了便捷性。但是,全能的东西能在各种环境下使用,但却不一定适用于各种环境。所以在定制html5版本时中,TypedArray在WEBGL规范中被引入用于解决Javascript处理二进制数据的问题。

类型化数组也是数组,只不过其元素被设置为特定类型的值。

类型化数组的核心就是一个名为ArrayBuffer的类型。每个ArrayBuffer对象表示的只是内存中指定的字节数,但不会指定这些字节用于保存什么类型的数据。通过ArrayBuffer能做的,就是为了将来使用而分配一定数量的字节。

// 创建一个8-byte的ArrayBuffer
var b = new ArrayBuffer(8);

// 创建一个b的引用,类型是Int32,起始位置在0,结束位置为缓冲区尾部
var v1 = new Int32Array(b);

// 创建一个b的引用,类型是Uint8,起始位置在2,结束位置为缓冲区尾部
var v2 = new Uint8Array(b, 2);

// 创建一个b的引用,类型是Int16,起始位置在2,总长度为2
var v3 = new Int16Array(b, 2, 2);

1.视图

使用ArrayBuffer(数组缓冲器类型)的一种特别的方式就是用它来创建数组缓冲器视图。其中,最常见的视图是DataView,通过它可以选择ArrayBuffer中的一小段字节。为此,可在创建DataView实例的时候传入一个ArrayBuffer、一个可选的字节偏移量(从该字节开始选择)和一个可选的要选择的字节数。

2.类型化视图

类型化视图一般也被称为类型化数组,因为它们除了元素必须是某种特定的数据类型外,与常规的数组无异。类型化视图也分几种,而且它们都继承了DataView。

(1)Int8Array:表示8为二补整数。

(2)Unit8Array:表示8位无符号整数。

(3)Int16Array:表示16位二补整数。

(4)Unit16Array:表示16位无符号整数。

(5)Int32Array:表示32为二补整数。

(6)Unit32Array:表示32位无符号整数。

(7)Float32Array:表示32位IEEE浮点值。

(8)Float64Array:表示64位IEEE浮点值。

每个视图构造函数都有一个名为BYTES_PER_ELEMENT的属性,表示类型化数组的每个元素需要多少字节

 

HTML5 中的新数组