简单的说,ArrayBuffer就表明了内存中的一段二进制数据,不能够直接读写,只能够经过在上面创建TypedArray视图或DataView视图来操做这段二进制数据,TypedArray视图主要用来操做简单类型的二进制数据,DataView用来操做复杂类型的二进制数据。数组
new ArrayBuffer(length) //length表明长度,单位是字节
创建一个ArrayBuffer就是这么简单,固然也能够有其它数据或对象转换而来,这里先不提,如此的一个对象,再借助下面将介绍的二个视图就能够好好利用了,不过再此以前,仍是先列举一下几个会有用的方法和属性:函数
TypedArray是用来操做简单类型的视图,一个视图对应一个肯定的类型,而且是连续的,默认为0。code
该视图支持的类型以下:对象
每种类型都有一个构造函数,用来生成对应的视图,所以其实TypedArray实际上是这些视图为了方便的一个统一称呼。内存
上面提到的每一个构造函数传递的参数有不少中,下面列举经常使用的四种:get
除了个别例外(好比concat方法),视图对象的操做和普通数组的操做基本差很少,这里给出一个例子:console
var arrayBuffer = new ArrayBuffer(6);//申请6个字节的内存空间 var int8Array = new Int8Array(arrayBuffer, 0, 2);//使用了2字节的空间 var int16Array = new Int16Array(arrayBuffer, 2, 2);//使用了4字节的空间 int8Array[0] = 1; int16Array[0] = 2; int16Array[1] = 3; console.log(int8Array); //Int8Array(2) [1, 0] console.log(int16Array); //Int16Array(2) [2, 3]
new DataView(ArrayBuffer实例对象[,字节起始位置[,长度]])
和TypedArray有很大区别的是,这里咱们在使用的时候可能要去关注一下大端仍是小端保存或读取数据。构造函数
若是说的简单点,其实DataView就是一个很是很是厉害视图,提供了不少方法,不像TypedArray视图须要创建对应视图而后读取,你能够调用DataView的实例对象上的方法就能够实现TypedArray哪些各类视图的功能,所以,你可能会涉及到这些方法:二进制
读数据的方法包括:getInt八、getUint八、getInt1六、getUint1六、getInt3二、getUint3二、getFloat3二、getFloat64。方法
带二个参数,第一个参数表示读取的开始位置,第二个参数表示是大端读取(false)仍是小端读取(true)。
写数据的方法包括:setInt八、setUint八、setInt1六、setUint1六、setInt3二、setUint3二、setFloat3二、setFloat64。
带三个参数,第一个参数表示写入的开始位置,第二个参数表示写入的数据,第三个参数表示是大端写入(false)仍是小端写入(true)。