Вид DataView предоставляет низко-уровневый интерфейс для чтения и записи многочисленных числовых типов в бинарном ArrayBuffer, независимо от порядка байтов платформы.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Синтаксис
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.
{{page('en-US/Web/JavaScript/Reference/Global_Objects/DataView/prototype','Properties')}}
Методы
{{page('en-US/Web/JavaScript/Reference/Global_Objects/DataView/prototype','Methods')}}
Пример
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' в этой спецификации. |
Живой стандарт |
Таблица совместимости
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.
var dv = DataView(buffer, 0);
// TypeError: calling a builtin DataView constructor without new is forbidden
var dv = new DataView(buffer, 0);Также
- jDataView: JavaScript library that polyfills and extends the
DataViewAPI to all browsers and Node.js. ArrayBufferSharedArrayBuffer