DataView

Baseline 廣泛可用 *

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

* 此特性的某些部分可能存在不同級別的支援。

DataView 檢視提供了一個底層介面,用於在二進位制 ArrayBuffer 中讀取和寫入多種數字型別,而無需關心平臺 位元組序

描述

位元組序

多位元組數字格式在記憶體中的表示方式因機器架構而異——有關解釋,請參閱 位元組序DataView 訪問器提供瞭如何訪問資料的顯式控制,無論執行計算機的位元組序如何。例如,WebAssembly 記憶體始終是小端序,因此你應該使用 DataView 而不是型別化陣列來讀寫多位元組值。請參閱 WebAssembly.Memory 瞭解示例。

js
const littleEndian = (() => {
  const buffer = new ArrayBuffer(2);
  new DataView(buffer).setInt16(0, 256, true /* littleEndian */);
  // Int16Array uses the platform's endianness.
  return new Int16Array(buffer)[0] === 256;
})();
console.log(littleEndian); // true or false

注意: DataView 預設使用大端序進行讀寫,但大多數平臺使用小端序。

建構函式

DataView()

建立一個新的 DataView 物件。

例項屬性

這些屬性定義在 DataView.prototype 上,並被所有 DataView 例項共享。

DataView.prototype.buffer

返回 DataView 引用的 ArrayBuffer

DataView.prototype.byteLength

返回 DataView 的長度(以位元組為單位)。

DataView.prototype.byteOffset

返回 DataView 相對於其 ArrayBuffer 起始位置的偏移量(以位元組為單位)。

DataView.prototype.constructor

建立例項物件的建構函式。對於 DataView 例項,初始值為 DataView 建構函式。

DataView.prototype[Symbol.toStringTag]

[Symbol.toStringTag] 屬性的初始值為字串 "DataView"。該屬性用於 Object.prototype.toString()

例項方法

DataView.prototype.getBigInt64()

從此 DataView 的指定位元組偏移量開始讀取 8 個位元組,並將其解釋為 64 位有符號整數。

DataView.prototype.getBigUint64()

從此 DataView 的指定位元組偏移量開始讀取 8 個位元組,並將其解釋為 64 位無符號整數。

DataView.prototype.getFloat16()

從此 DataView 的指定位元組偏移量開始讀取 2 個位元組,並將其解釋為 16 位浮點數。

DataView.prototype.getFloat32()

從此 DataView 的指定位元組偏移量開始讀取 4 個位元組,並將其解釋為 32 位浮點數。

DataView.prototype.getFloat64()

從此 DataView 的指定位元組偏移量開始讀取 8 個位元組,並將其解釋為 64 位浮點數。

DataView.prototype.getInt16()

從此 DataView 的指定位元組偏移量開始讀取 2 個位元組,並將其解釋為 16 位有符號整數。

DataView.prototype.getInt32()

從此 DataView 的指定位元組偏移量開始讀取 4 個位元組,並將其解釋為 32 位有符號整數。

DataView.prototype.getInt8()

從此 DataView 的指定位元組偏移量讀取 1 個位元組,並將其解釋為 8 位有符號整數。

DataView.prototype.getUint16()

從此 DataView 的指定位元組偏移量開始讀取 2 個位元組,並將其解釋為 16 位無符號整數。

DataView.prototype.getUint32()

從此 DataView 的指定位元組偏移量開始讀取 4 個位元組,並將其解釋為 32 位無符號整數。

DataView.prototype.getUint8()

從此 DataView 的指定位元組偏移量讀取 1 個位元組,並將其解釋為 8 位無符號整數。

DataView.prototype.setBigInt64()

接受一個 BigInt,並將其作為 64 位有符號整數儲存在此 DataView 的指定位元組偏移量開始的 8 個位元組中。

DataView.prototype.setBigUint64()

接受一個 BigInt,並將其作為 64 位無符號整數儲存在此 DataView 的指定位元組偏移量開始的 8 個位元組中。

DataView.prototype.setFloat16()

接受一個數字,並將其作為 16 位浮點數儲存在此 DataView 的指定位元組偏移量開始的 2 個位元組中。

DataView.prototype.setFloat32()

接受一個數字,並將其作為 32 位浮點數儲存在此 DataView 的指定位元組偏移量開始的 4 個位元組中。

DataView.prototype.setFloat64()

接受一個數字,並將其作為 64 位浮點數儲存在此 DataView 的指定位元組偏移量開始的 8 個位元組中。

DataView.prototype.setInt16()

接受一個數字,並將其作為 16 位有符號整數儲存在此 DataView 的指定位元組偏移量處的 2 個位元組中。

DataView.prototype.setInt32()

接受一個數字,並將其作為 32 位有符號整數儲存在此 DataView 的指定位元組偏移量處的 4 個位元組中。

DataView.prototype.setInt8()

接受一個數字,並將其作為 8 位有符號整數儲存在此 DataView 的指定位元組偏移量處的位元組中。

DataView.prototype.setUint16()

接受一個數字,並將其作為 16 位無符號整數儲存在此 DataView 的指定位元組偏移量處的 2 個位元組中。

DataView.prototype.setUint32()

接受一個數字,並將其作為 32 位無符號整數儲存在此 DataView 的指定位元組偏移量處的 4 個位元組中。

DataView.prototype.setUint8()

接受一個數字,並將其作為 8 位無符號整數儲存在此 DataView 的指定位元組偏移量處的位元組中。

示例

使用 DataView

js
const buffer = new ArrayBuffer(16);
const view = new DataView(buffer, 0);

view.setInt16(1, 42);
view.getInt16(1); // 42

規範

規範
ECMAScript® 2026 語言規範
# sec-dataview-objects

瀏覽器相容性

另見