1. 程式人生 > >ES6知識點整理之----ArrayBuffer

ES6知識點整理之----ArrayBuffer

webgl 行操作 進制 增強 目的 c 語言 類型 數組下標 arr

這個接口的原始設計目的,與 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 位整數)、第二、三個字節是 Int16(16 位整數)、第四個字節開始是 Float32(32 位浮點數)等等,此外還可以自定義字節序。

簡單說,ArrayBuffer對象代表原始的二進制數據,TypedArray 視圖用來讀寫簡單類型的二進制數據,DataView視圖用來讀寫復雜類型的二進制數據。

(暫略)

ES6知識點整理之----ArrayBuffer