這個接口的原始設計目的,與 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
視圖用來讀寫複雜類型的二進制數據。對象
(暫略)接口