DataView

Вы читаете английскую версию этой статьи, так как пока нет перевода на данный язык. Помогите нам перевести эту статью!

Вид DataView предоставляет низко-уровневый интерфейс для чтения и записи многочисленных числовых типов в бинарном ArrayBuffer, независимо от порядка байтов платформы.

Синтаксис

new DataView(buffer [, byteOffset [, byteLength]])

Параметры

buffer
Существующий ArrayBuffer или SharedArrayBuffer для использования как хранилище для нового объекта DataView.
byteOffset Необязательный
Смещение в байтах к первому байту в заданном буфере. Если не определён, то вид буфера будет начинаться с первого байта.
byteLength Необязательный
Количество элементов в массиве байтов. Если не определён, то длина вида будет соответствовать длине буфера.

Возвращаемое значение

Новый объект DataView представляющий определённый буфер данных.

Исключения

RangeError
Выкидывается если byteOffset  и byteLength заходит за пределы буфера.

Описание

Порядок байтов

Многобайтовые числовые форматы представлены в памяти по разному в зависимости от архитектуры машины, см Endianness для объяснения. Аксессоры DataView предоставляют явный контроль над обращением к данным вне зависимости от порядка байтов архитектуры платформы.

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.constructor
Specifies the function that creates an object's prototype. The initial value is the standard built-in DataView constructor.
DataView.prototype.buffer Read only
The ArrayBuffer referenced by this view. Fixed at construction time and thus read only.
DataView.prototype.byteLength Read only
The length (in bytes) of this view from the start of its ArrayBuffer. Fixed at construction time and thus read only.
DataView.prototype.byteOffset Read only
The offset (in bytes) of this view from the start of its ArrayBuffer. Fixed at construction time and thus read only.

Методы

Read

DataView.prototype.getInt8()
Gets a signed 8-bit integer (byte) at the specified byte offset from the start of the view.
DataView.prototype.getUint8()
Gets an unsigned 8-bit integer (unsigned byte) at the specified byte offset from the start of the view.
DataView.prototype.getInt16()
Gets a signed 16-bit integer (short) at the specified byte offset from the start of the view.
DataView.prototype.getUint16()
Gets an unsigned 16-bit integer (unsigned short) at the specified byte offset from the start of the view.
DataView.prototype.getInt32()
Gets a signed 32-bit integer (long) at the specified byte offset from the start of the view.
DataView.prototype.getUint32()
Gets an unsigned 32-bit integer (unsigned long) at the specified byte offset from the start of the view.
DataView.prototype.getFloat32()
Gets a signed 32-bit float (float) at the specified byte offset from the start of the view.
DataView.prototype.getFloat64()
Gets a signed 64-bit float (double) at the specified byte offset from the start of the view.
DataView.prototype.getBigInt64()
Gets a signed 64-bit integer (long long) at the specified byte offset from the start of the view.
DataView.prototype.getBigUint64()
Gets an unsigned 64-bit integer (unsigned long long) at the specified byte offset from the start of the view.

Write

DataView.prototype.setInt8()
Stores a signed 8-bit integer (byte) value at the specified byte offset from the start of the view.
DataView.prototype.setUint8()
Stores an unsigned 8-bit integer (unsigned byte) value at the specified byte offset from the start of the view.
DataView.prototype.setInt16()
Stores a signed 16-bit integer (short) value at the specified byte offset from the start of the view.
DataView.prototype.setUint16()
Stores an unsigned 16-bit integer (unsigned short) value at the specified byte offset from the start of the view.
DataView.prototype.setInt32()
Stores a signed 32-bit integer (long) value at the specified byte offset from the start of the view.
DataView.prototype.setUint32()
Stores an unsigned 32-bit integer (unsigned long) value at the specified byte offset from the start of the view.
DataView.prototype.setFloat32()
Stores a signed 32-bit float (float) value at the specified byte offset from the start of the view.
DataView.prototype.setFloat64()
Stores a signed 64-bit float (double) value at the specified byte offset from the start of the view.
DataView.prototype.setBigInt64()
Stores a signed 64-bit integer (long long) value at the specified byte offset from the start of the view.
DataView.prototype.setBigUint64()
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 Status Comment
Typed Array Specification Устаревшая Superseded by ECMAScript 6
ECMAScript 2015 (6th Edition, ECMA-262)
Определение 'DataView' в этой спецификации.
Стандарт Initial definition in an ECMA standard
ECMAScript Latest Draft (ECMA-262)
Определение 'DataView' в этой спецификации.
Черновик  

Таблица совместимости

Update compatibility data on GitHub
КомпьютерыМобильныеServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung InternetNode.js
DataViewChrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка Даnodejs Полная поддержка Да
bufferChrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка Даnodejs Полная поддержка Да
byteLengthChrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка Даnodejs Полная поддержка Да
byteOffsetChrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка Даnodejs Полная поддержка Да
getBigInt64Chrome Полная поддержка 67Edge Нет поддержки НетFirefox Полная поддержка 68IE Нет поддержки НетOpera Полная поддержка 54Safari Нет поддержки НетWebView Android Полная поддержка 67Chrome Android Полная поддержка 67Firefox Android Полная поддержка 68Opera Android Полная поддержка 48Safari iOS Нет поддержки НетSamsung Internet Android Полная поддержка 9.0nodejs Полная поддержка 10.4.0
getBigUint64Chrome Полная поддержка 67Edge Нет поддержки НетFirefox Полная поддержка 68IE Нет поддержки НетOpera Полная поддержка 54Safari Нет поддержки НетWebView Android Полная поддержка 67Chrome Android Полная поддержка 67Firefox Android Полная поддержка 68Opera Android Полная поддержка 48Safari iOS Нет поддержки НетSamsung Internet Android Полная поддержка 9.0nodejs Полная поддержка 10.4.0
getFloat32Chrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка Даnodejs Полная поддержка Да
getFloat64Chrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка Даnodejs Полная поддержка Да
getInt16Chrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка Даnodejs Полная поддержка Да
getInt32Chrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка Даnodejs Полная поддержка Да
getInt8Chrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка Даnodejs Полная поддержка Да
getUint16Chrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка Даnodejs Полная поддержка Да
getUint32Chrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка Даnodejs Полная поддержка Да
getUint8Chrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка Даnodejs Полная поддержка Да
DataView() without new throwsChrome Полная поддержка 11Edge Полная поддержка 13Firefox Полная поддержка 40IE Нет поддержки НетOpera Полная поддержка ДаSafari ? WebView Android Полная поддержка ≤37Chrome Android Полная поддержка 18Firefox Android Полная поддержка 40Opera Android Полная поддержка ДаSafari iOS ? Samsung Internet Android Полная поддержка 1.0nodejs Полная поддержка 0.12
prototypeChrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка Даnodejs Полная поддержка Да
setBigInt64Chrome Полная поддержка 67Edge Нет поддержки НетFirefox Полная поддержка 68IE Нет поддержки НетOpera Полная поддержка 54Safari Нет поддержки НетWebView Android Полная поддержка 67Chrome Android Полная поддержка 67Firefox Android Полная поддержка 68Opera Android Полная поддержка 48Safari iOS Нет поддержки НетSamsung Internet Android Полная поддержка 9.0nodejs Полная поддержка 10.4.0
setBigUint64Chrome Полная поддержка 67Edge Нет поддержки НетFirefox Полная поддержка 68IE Нет поддержки НетOpera Полная поддержка 54Safari Нет поддержки НетWebView Android Полная поддержка 67Chrome Android Полная поддержка 67Firefox Android Полная поддержка 68Opera Android Полная поддержка 48Safari iOS Нет поддержки НетSamsung Internet Android Полная поддержка 9.0nodejs Полная поддержка 10.4.0
setFloat32Chrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка Даnodejs Полная поддержка Да
setFloat64Chrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка Даnodejs Полная поддержка Да
setInt16Chrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка Даnodejs Полная поддержка Да
setInt32Chrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка Даnodejs Полная поддержка Да
setInt8Chrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка Даnodejs Полная поддержка Да
setUint16Chrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка Даnodejs Полная поддержка Да
setUint32Chrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка Даnodejs Полная поддержка Да
setUint8Chrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка Даnodejs Полная поддержка Да
SharedArrayBuffer accepted as bufferChrome Полная поддержка 60Edge Нет поддержки НетFirefox Полная поддержка 55IE Нет поддержки НетOpera Полная поддержка 47Safari ? WebView Android Полная поддержка 60Chrome Android Полная поддержка 60Firefox Android Полная поддержка 55Opera Android ? Safari iOS ? Samsung Internet Android Полная поддержка 8.0nodejs ?

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Совместимость неизвестна  
Совместимость неизвестна

Замечания совместимости

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);

Также