早期,希望在浏览器中安装用于渲染复杂图形的编程平台,无需安装插件。出现了webGL,是基于OpenGL ES2.0的JavaScript API。早期版本中,JavaScript数组与原生数组之间不匹配,出现性能问题。Array对象可以容纳任意类型以及容量可以动态增长,进而导致运行效率低下以及占用内存。
图形驱动程序API不需要以JavaScript默认的双精度浮点格式(js数组存储在内存中的格式)传递给它们的数值。所以提出了定型数组TypeArray、DataView、ArrayBuffer几种对象
实际上JavaScript没有TypedArray类型,实质是一种特殊的包含数值类型的数组。但是isArray对他们返回false。
- 实现了所有的Array方法(改变长度的除外),外加几个自己的方法
- 数组元素全部都是数值,允许指定数值的类型(有无符号、浮点、大小8bit-64bit)
- 创建时必须指定长度,且不可变。(元素会被初始化为0)
除了使用常见11种定型数组的构造函数和对应from、of方法创建定型数组外,还可以使用ArrayBuffer类型
new ArrayBuffer(length);//字节
ArrayBuffer 对象用来表示通用的、固定长度的原始二进制数据缓冲区。对内存的不透明引用。
不能直接操作 ArrayBuffer 的数据,而是要通过类型数组对象或 DataView 对象来操作,它们会将缓冲区中的数据表示为特定的格式,并通过这些格式来读写缓冲区的内容。