Вид 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.
Методы
Пример
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
DataView
API to all browsers and Node.js. ArrayBuffer
SharedArrayBuffer