DataView
DataView
視圖提供了一個底層介面來讀寫 ArrayBuffer
中的二進位資料。DataView
能用多種不同的型別對 ArrayBuffer
進行修改、解讀,且可自訂資料的位元組順序而不受系統平台限制。DataView
物件僅為視圖,並不會存放資料,所有的資料皆實際儲存於 ArrayBuffer
物件當中。
語法
new DataView(buffer [, byteOffset [, byteLength]])
參數
buffer
-
要給 DataView 物件操作的資料容器並且不能為 null
byteOffset
選擇性-
The offset, in bytes, to the first byte in the specified buffer for the new view to reference. If not specified, the view of the buffer will start with the first byte.
byteLength
選擇性-
The number of elements in the byte array. If unspecified, length of the view will match the buffer's length.
回傳值
A new DataView
object representing the specified data buffer.
Errors thrown
RangeError
-
Thrown if the
byteOffset
andbyteLength
result in the specified view extending past the end of the buffer.
描述
位元組順序
Multi-byte number formats are represented in memory differently depending on machine architecture, see Endianness (en-US) for an explanation. DataView accessors provide explicit control of how data will be accessed irrespective of the platform architecture's endianness.
var littleEndian = (function() {
var 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.length
-
The
DataView
constructor's length property whose value is 3. DataView.prototype
(en-US)-
Allows the addition of properties to all
DataView
objects.
DataView
實例
All DataView
instances inherit from DataView.prototype
(en-US).
屬性
DataView.prototype[@@toStringTag]
-
The initial value of the
@@toStringTag
(en-US) property is the string"DataView"
. This property is used inObject.prototype.toString()
(en-US). DataView.prototype.buffer
(en-US)-
The
ArrayBuffer
referenced by this view. Fixed at construction time and thus read only. DataView.prototype.byteLength
(en-US)-
The length (in bytes) of this view. Fixed at construction time and thus read only.
DataView.prototype.byteOffset
(en-US)-
The offset (in bytes) of this view from the start of its
ArrayBuffer
. Fixed at construction time and thus read only.
方法
DataView.prototype.getInt8()
(en-US)-
Gets a signed 8-bit integer (byte) at the specified byte offset from the start of the view.
DataView.prototype.getUint8()
(en-US)-
Gets an unsigned 8-bit integer (unsigned byte) at the specified byte offset from the start of the view.
DataView.prototype.getInt16()
(en-US)-
Gets a signed 16-bit integer (short) at the specified byte offset from the start of the view.
DataView.prototype.getUint16()
(en-US)-
Gets an unsigned 16-bit integer (unsigned short) at the specified byte offset from the start of the view.
DataView.prototype.getInt32()
(en-US)-
Gets a signed 32-bit integer (long) at the specified byte offset from the start of the view.
DataView.prototype.getUint32()
(en-US)-
Gets an unsigned 32-bit integer (unsigned long) at the specified byte offset from the start of the view.
DataView.prototype.getFloat32()
(en-US)-
Gets a signed 32-bit float (float) at the specified byte offset from the start of the view.
DataView.prototype.getFloat64()
(en-US)-
Gets a signed 64-bit float (double) at the specified byte offset from the start of the view.
DataView.prototype.getBigInt64()
(en-US)-
Gets a signed 64-bit integer (long long) at the specified byte offset from the start of the view.
DataView.prototype.getBigUint64()
(en-US)-
Gets an unsigned 64-bit integer (unsigned long long) at the specified byte offset from the start of the view.
DataView.prototype.setInt8()
(en-US)-
Stores a signed 8-bit integer (byte) value at the specified byte offset from the start of the view.
DataView.prototype.setUint8()
(en-US)-
Stores an unsigned 8-bit integer (unsigned byte) value at the specified byte offset from the start of the view.
DataView.prototype.setInt16()
(en-US)-
Stores a signed 16-bit integer (short) value at the specified byte offset from the start of the view.
DataView.prototype.setUint16()
(en-US)-
Stores an unsigned 16-bit integer (unsigned short) value at the specified byte offset from the start of the view.
DataView.prototype.setInt32()
(en-US)-
Stores a signed 32-bit integer (long) value at the specified byte offset from the start of the view.
DataView.prototype.setUint32()
(en-US)-
Stores an unsigned 32-bit integer (unsigned long) value at the specified byte offset from the start of the view.
DataView.prototype.setFloat32()
(en-US)-
Stores a signed 32-bit float (float) value at the specified byte offset from the start of the view.
DataView.prototype.setFloat64()
(en-US)-
Stores a signed 64-bit float (double) value at the specified byte offset from the start of the view.
DataView.prototype.setBigInt64()
(en-US)-
Stores a signed 64-bit integer (long long) value at the specified byte offset from the start of the view.
DataView.prototype.setBigUint64()
(en-US)-
Stores an unsigned 64-bit integer (unsigned long long) value at the specified byte offset from the start of the view.
範例
var buffer = new ArrayBuffer(16);
var dv = new DataView(buffer, 0);
dv.setInt16(1, 42);
dv.getInt16(1); //42
規範
Specification |
---|
ECMAScript Language Specification # sec-dataview-objects |
瀏覽器相容性
BCD tables only load in the browser
Firefox-specific notes
Starting with Gecko / SpiderMonkey 40, DataView
requires to be constructed with a new
operator. Calling DataView()
as a function without new
, will throw a TypeError
(en-US) from now on.
var dv = DataView(buffer, 0);
// TypeError: calling a builtin DataView constructor without new is forbidden
var dv = new DataView(buffer, 0);
參見
- jDataView: JavaScript library that polyfills and extends the
DataView
API to all browsers and Node.js.