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.

Методы

Пример

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 (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 Полная поддержка 1.0nodejs Полная поддержка 0.10
DataView() constructorChrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка 1.0nodejs Полная поддержка 0.10
bufferChrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка 1.0nodejs Полная поддержка 0.10
byteLengthChrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка 1.0nodejs Полная поддержка 0.10
byteOffsetChrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка 1.0nodejs Полная поддержка 0.10
getBigInt64Chrome Полная поддержка 67Edge Полная поддержка 79Firefox Полная поддержка 68IE Нет поддержки НетOpera Полная поддержка 54Safari Нет поддержки НетWebView Android Полная поддержка 67Chrome Android Полная поддержка 67Firefox Android Полная поддержка 68Opera Android Полная поддержка 48Safari iOS Нет поддержки НетSamsung Internet Android Полная поддержка 9.0nodejs Полная поддержка 10.4.0
getBigUint64Chrome Полная поддержка 67Edge Полная поддержка 79Firefox Полная поддержка 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 Полная поддержка 1.0nodejs Полная поддержка 0.10
getFloat64Chrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка 1.0nodejs Полная поддержка 0.10
getInt16Chrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка 1.0nodejs Полная поддержка 0.10
getInt32Chrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка 1.0nodejs Полная поддержка 0.10
getInt8Chrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка 1.0nodejs Полная поддержка 0.10
getUint16Chrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка 1.0nodejs Полная поддержка 0.10
getUint32Chrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка 1.0nodejs Полная поддержка 0.10
getUint8Chrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка 1.0nodejs Полная поддержка 0.10
setBigInt64Chrome Полная поддержка 67Edge Полная поддержка 79Firefox Полная поддержка 68IE Нет поддержки НетOpera Полная поддержка 54Safari Нет поддержки НетWebView Android Полная поддержка 67Chrome Android Полная поддержка 67Firefox Android Полная поддержка 68Opera Android Полная поддержка 48Safari iOS Нет поддержки НетSamsung Internet Android Полная поддержка 9.0nodejs Полная поддержка 10.4.0
setBigUint64Chrome Полная поддержка 67Edge Полная поддержка 79Firefox Полная поддержка 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 Полная поддержка 1.0nodejs Полная поддержка 0.10
setFloat64Chrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка 1.0nodejs Полная поддержка 0.10
setInt16Chrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка 1.0nodejs Полная поддержка 0.10
setInt32Chrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка 1.0nodejs Полная поддержка 0.10
setInt8Chrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка 1.0nodejs Полная поддержка 0.10
setUint16Chrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка 1.0nodejs Полная поддержка 0.10
setUint32Chrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка 1.0nodejs Полная поддержка 0.10
setUint8Chrome Полная поддержка 9Edge Полная поддержка 12Firefox Полная поддержка 15IE Полная поддержка 10Opera Полная поддержка 12.1Safari Полная поддержка 5.1WebView Android Полная поддержка 4Chrome Android Полная поддержка 18Firefox Android Полная поддержка 15Opera Android Полная поддержка 12.1Safari iOS Полная поддержка 4.2Samsung Internet Android Полная поддержка 1.0nodejs Полная поддержка 0.10

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки

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

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

Также