DataView

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

Интерактивный пример

Синтаксис

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

Параметры

buffer

Существующий ArrayBuffer или SharedArrayBuffer Экспериментальная возможность для использования как хранилище для нового объекта DataView.

byteOffset Необязательный

Смещение в байтах к первому байту в заданном буфере. Если не определён, то вид буфера будет начинаться с первого байта.

byteLength Необязательный

Количество элементов в массиве байтов. Если не определён, то длина вида будет соответствовать длине буфера.

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

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

Исключения

RangeError

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

Описание

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

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

js

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 (en-US) and allows the addition of properties to all DataView objects.

{{page('en-US/Web/JavaScript/Reference/Global_Objects/DataView/prototype','Properties')}}

Методы

{{page('en-US/Web/JavaScript/Reference/Global_Objects/DataView/prototype','Methods')}}

Пример

js

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

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

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.

js

var dv = DataView(buffer, 0);
// TypeError: calling a builtin DataView constructor without new is forbidden

js

var dv = new DataView(buffer, 0);

Также