The DataView view provides a low-level interface for reading and writing multiple number types in an ArrayBuffer irrespective of the platform's endianness.
new DataView(buffer [, byteOffset [, byteLength]])
bufferArrayBuffer or SharedArrayBuffer to use as the storage for the new DataView object.byteOffset Optional
byteLength Optional
A new DataView object representing the specified data buffer.
RangeErrorbyteOffset and byteLength 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 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
All DataView instances inherit from DataView.prototype and allows the addition of properties to all DataView objects.
DataView.prototype.constructorDataView constructor.DataView.prototype.buffer Read only
ArrayBuffer referenced by this view. Fixed at construction time and thus read only.
DataView.prototype.byteLength Read only
ArrayBuffer. Fixed at construction time and thus read only.
DataView.prototype.byteOffset Read only
ArrayBuffer. Fixed at construction time and thus read only.
DataView.prototype.getInt8()DataView.prototype.getUint8()DataView.prototype.getInt16()DataView.prototype.getUint16()DataView.prototype.getInt32()DataView.prototype.getUint32()DataView.prototype.getFloat32()DataView.prototype.getFloat64()DataView.prototype.setInt8()DataView.prototype.setUint8()DataView.prototype.setInt16()DataView.prototype.setUint16()DataView.prototype.setInt32()DataView.prototype.setUint32()DataView.prototype.setFloat32()DataView.prototype.setFloat64()var buffer = new ArrayBuffer(16); var dv = new DataView(buffer, 0); dv.setInt16(1, 42); dv.getInt16(1); //42
| Specification | Status | Comment |
|---|---|---|
| Typed Array Specification | Obsolete | Superseded by ECMAScript 6 |
| ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'DataView' in that specification. | Standard | Initial definition in an ECMA standard |
| ECMAScript Latest Draft (ECMA-262) The definition of 'DataView' in that specification. | Draft |
| Feature | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|---|
| Basic support | 9 | 12 | 15 | 10 | 12.1 | 5.1 |
DataView() without new throws |
Yes | Yes | 40 | No | Yes | ? |
SharedArrayBuffer accepted as buffer |
60 | ? | 55 | ? | ? | ? |
buffer |
9 | 12 | 15 | 10 | 12.1 | 5.1 |
byteLength |
9 | 12 | 15 | 10 | 12.1 | 5.1 |
byteOffset |
9 | 12 | 15 | 10 | 12.1 | 5.1 |
getFloat32 |
9 | 12 | 15 | 10 | 12.1 | 5.1 |
getFloat64 |
9 | 12 | 15 | 10 | 12.1 | 5.1 |
getInt16 |
9 | 12 | 15 | 10 | 12.1 | 5.1 |
getInt32 |
9 | 12 | 15 | 10 | 12.1 | 5.1 |
getInt8 |
9 | 12 | 15 | 10 | 12.1 | 5.1 |
getUint16 |
9 | 12 | 15 | 10 | 12.1 | 5.1 |
getUint32 |
9 | 12 | 15 | 10 | 12.1 | 5.1 |
getUint8 |
9 | 12 | 15 | 10 | 12.1 | 5.1 |
setFloat32 |
9 | 12 | 15 | 10 | 12.1 | 5.1 |
setFloat64 |
9 | 12 | 15 | 10 | 12.1 | 5.1 |
setInt16 |
9 | 12 | 15 | 10 | 12.1 | 5.1 |
setInt32 |
9 | 12 | 15 | 10 | 12.1 | 5.1 |
setInt8 |
9 | 12 | 15 | 10 | 12.1 | 5.1 |
setUint16 |
9 | 12 | 15 | 10 | 12.1 | 5.1 |
setUint32 |
9 | 12 | 15 | 10 | 12.1 | 5.1 |
setUint8 |
9 | 12 | 15 | 10 | 12.1 | 5.1 |
prototype |
9 | 12 | 15 | 10 | 12.1 | 5.1 |
| Feature | Android webview | Chrome for Android | Edge mobile | Firefox for Android | Opera Android | iOS Safari | Samsung Internet |
|---|---|---|---|---|---|---|---|
| Basic support | 4 | Yes | Yes | 15 | 12 | 4.2 | ? |
DataView() without new throws |
? | ? | ? | 40 | ? | ? | ? |
SharedArrayBuffer accepted as buffer |
? | ? | ? | 55 | ? | ? | ? |
buffer |
4 | Yes | Yes | 15 | 12 | 4.2 | ? |
byteLength |
4 | Yes | Yes | 15 | 12 | 4.2 | ? |
byteOffset |
4 | Yes | Yes | 15 | 12 | 4.2 | ? |
getFloat32 |
4 | Yes | Yes | 15 | 12 | 4.2 | ? |
getFloat64 |
4 | Yes | Yes | 15 | 12 | 4.2 | ? |
getInt16 |
4 | Yes | Yes | 15 | 12 | 4.2 | ? |
getInt32 |
4 | Yes | Yes | 15 | 12 | 4.2 | ? |
getInt8 |
4 | Yes | Yes | 15 | 12 | 4.2 | ? |
getUint16 |
4 | Yes | Yes | 15 | 12 | 4.2 | ? |
getUint32 |
4 | Yes | Yes | 15 | 12 | 4.2 | ? |
getUint8 |
4 | Yes | Yes | 15 | 12 | 4.2 | ? |
setFloat32 |
4 | Yes | Yes | 15 | 12 | 4.2 | ? |
setFloat64 |
4 | Yes | Yes | 15 | 12 | 4.2 | ? |
setInt16 |
4 | Yes | Yes | 15 | 12 | 4.2 | ? |
setInt32 |
4 | Yes | Yes | 15 | 12 | 4.2 | ? |
setInt8 |
4 | Yes | Yes | 15 | 12 | 4.2 | ? |
setUint16 |
4 | Yes | Yes | 15 | 12 | 4.2 | ? |
setUint32 |
4 | Yes | Yes | 15 | 12 | 4.2 | ? |
setUint8 |
4 | Yes | Yes | 15 | 12 | 4.2 | ? |
prototype |
4 | Yes | Yes | 15 | 12 | 4.2 | ? |
Starting with Firefox 40, DataView requires to be constructed with a new operator. Calling DataView() as a function without new, will throw a TypeError from now on.
var dv = DataView(buffer, 0); // TypeError: calling a builtin DataView constructor without new is forbidden
var dv = new DataView(buffer, 0);
DataView API to all browsers and Node.js.ArrayBufferSharedArrayBuffer
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView