JavaScript typed arrays are array-like objects and provide a mechanism for accessing raw binary data.
存储是用 ArrayBuffer
(字节存储buffer),初始化必须指定大小,不可再改动长度,同时也不可访问其中的值,因为它仅仅是一种存储buffer,需要对应的view才能解析并读取;
view有好几种,明确类型的比如UInt8Array,Float32Array等等,底层的统一的DataView(有setUInt,setFloat32等方法); 其中DataView存在很重要的意思是在更底层定义字节排列的顺序(查看编码);其中字符串可以使用charCodeAt
转成数字(本质上字符也是数字存储,bit只有0,1),但需要注意,字符是有2个字节表示
typed array与普通数组的转换
var typedArray = new Uint8Array([1, 2, 3, 4]),
normalArray = Array.prototype.slice.call(typedArray);
normalArray.length === 4;
normalArray.constructor === Array;
UInt8Array与UInt8ClampedArray
注意,其中 Clamp采用的是银行家舍入算法, UInt8ClampedArray最常用的场景用于 ImageData;
使用场景
图片,ajax, imageData,SaveFile;
还有例如:
new Image().src = new Blob([arraybuffer],{type:'image/png'});