这个接口的原始设计目的,与 WebGL 项目有关。所谓 WebGL,就是指浏览器与显卡之间的通讯接口,为了知足 JavaScript 与显卡之间大量的、实时的数据交换,它们之间的数据通讯必须是二进制的,而不能是传统的文本格式。文本格式传递一个 32 位整数,两端的 JavaScript 脚本与显卡都要进行格式转化,将很是耗时。这时要是存在一种机制,能够像 C 语言那样,直接操做字节,将 4 个字节的 32 位整数,以二进制形式原封不动地送入显卡,脚本的性能就会大幅提高。数组
二进制数组就是在这种背景下诞生的。它很像 C 语言的数组,容许开发者以数组下标的形式,直接操做内存,大大加强了 JavaScript 处理二进制数据的能力,使得开发者有可能经过 JavaScript 与操做系统的原生接口进行二进制通讯。浏览器
二进制数组由三类对象组成:性能
(1)ArrayBuffer
对象:表明内存之中的一段二进制数据,能够经过“视图”进行操做。“视图”部署了数组接口,这意味着,能够用数组的方法操做内存。操作系统
(2)TypedArray
视图:共包括 9 种类型的视图,好比Uint8Array
(无符号 8 位整数)数组视图, Int16Array
(16 位整数)数组视图, Float32Array
(32 位浮点数)数组视图等等。设计
(3)DataView
视图:能够自定义复合格式的视图,好比第一个字节是 Uint8(无符号 8 位整数)、第2、三个字节是 Int16(16 位整数)、第四个字节开始是 Float32(32 位浮点数)等等,此外还能够自定义字节序。code
简单说,ArrayBuffer
对象表明原始的二进制数据,TypedArray 视图用来读写简单类型的二进制数据,DataView
视图用来读写复杂类型的二进制数据。对象
(暂略)接口