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.
Методы
Пример
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);
Также
- jDataView: JavaScript library that polyfills and extends the
DataView
API to all browsers and Node.js. ArrayBuffer
SharedArrayBuffer