Этот перевод не завершён. Пожалуйста, помогите перевести эту статью с английского
Вид 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' в этой спецификации. |
Живой стандарт |
Таблица совместимости
| Компьютеры | Мобильные | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
DataView | Chrome Полная поддержка 9 | Edge Полная поддержка 12 | Firefox Полная поддержка 15 | IE Полная поддержка 10 | Opera Полная поддержка 12.1 | Safari Полная поддержка 5.1 | WebView Android Полная поддержка 4 | Chrome Android Полная поддержка 18 | Firefox Android Полная поддержка 15 | Opera Android Полная поддержка 12.1 | Safari iOS Полная поддержка 4.2 | Samsung Internet Android Полная поддержка 1.0 | nodejs Полная поддержка 0.10 |
DataView() constructor | Chrome Полная поддержка 9 | Edge Полная поддержка 12 | Firefox Полная поддержка 15 | IE Полная поддержка 10 | Opera Полная поддержка 12.1 | Safari Полная поддержка 5.1 | WebView Android Полная поддержка 4 | Chrome Android Полная поддержка 18 | Firefox Android Полная поддержка 15 | Opera Android Полная поддержка 12.1 | Safari iOS Полная поддержка 4.2 | Samsung Internet Android Полная поддержка 1.0 | nodejs Полная поддержка 0.10 |
buffer | Chrome Полная поддержка 9 | Edge Полная поддержка 12 | Firefox Полная поддержка 15 | IE Полная поддержка 10 | Opera Полная поддержка 12.1 | Safari Полная поддержка 5.1 | WebView Android Полная поддержка 4 | Chrome Android Полная поддержка 18 | Firefox Android Полная поддержка 15 | Opera Android Полная поддержка 12.1 | Safari iOS Полная поддержка 4.2 | Samsung Internet Android Полная поддержка 1.0 | nodejs Полная поддержка 0.10 |
byteLength | Chrome Полная поддержка 9 | Edge Полная поддержка 12 | Firefox Полная поддержка 15 | IE Полная поддержка 10 | Opera Полная поддержка 12.1 | Safari Полная поддержка 5.1 | WebView Android Полная поддержка 4 | Chrome Android Полная поддержка 18 | Firefox Android Полная поддержка 15 | Opera Android Полная поддержка 12.1 | Safari iOS Полная поддержка 4.2 | Samsung Internet Android Полная поддержка 1.0 | nodejs Полная поддержка 0.10 |
byteOffset | Chrome Полная поддержка 9 | Edge Полная поддержка 12 | Firefox Полная поддержка 15 | IE Полная поддержка 10 | Opera Полная поддержка 12.1 | Safari Полная поддержка 5.1 | WebView Android Полная поддержка 4 | Chrome Android Полная поддержка 18 | Firefox Android Полная поддержка 15 | Opera Android Полная поддержка 12.1 | Safari iOS Полная поддержка 4.2 | Samsung Internet Android Полная поддержка 1.0 | nodejs Полная поддержка 0.10 |
getBigInt64 | Chrome Полная поддержка 67 | Edge Полная поддержка 79 | Firefox Полная поддержка 68 | IE Нет поддержки Нет | Opera Полная поддержка 54 | Safari Нет поддержки Нет | WebView Android Полная поддержка 67 | Chrome Android Полная поддержка 67 | Firefox Android Полная поддержка 68 | Opera Android Полная поддержка 48 | Safari iOS Нет поддержки Нет | Samsung Internet Android Полная поддержка 9.0 | nodejs Полная поддержка 10.4.0 |
getBigUint64 | Chrome Полная поддержка 67 | Edge Полная поддержка 79 | Firefox Полная поддержка 68 | IE Нет поддержки Нет | Opera Полная поддержка 54 | Safari Нет поддержки Нет | WebView Android Полная поддержка 67 | Chrome Android Полная поддержка 67 | Firefox Android Полная поддержка 68 | Opera Android Полная поддержка 48 | Safari iOS Нет поддержки Нет | Samsung Internet Android Полная поддержка 9.0 | nodejs Полная поддержка 10.4.0 |
getFloat32 | Chrome Полная поддержка 9 | Edge Полная поддержка 12 | Firefox Полная поддержка 15 | IE Полная поддержка 10 | Opera Полная поддержка 12.1 | Safari Полная поддержка 5.1 | WebView Android Полная поддержка 4 | Chrome Android Полная поддержка 18 | Firefox Android Полная поддержка 15 | Opera Android Полная поддержка 12.1 | Safari iOS Полная поддержка 4.2 | Samsung Internet Android Полная поддержка 1.0 | nodejs Полная поддержка 0.10 |
getFloat64 | Chrome Полная поддержка 9 | Edge Полная поддержка 12 | Firefox Полная поддержка 15 | IE Полная поддержка 10 | Opera Полная поддержка 12.1 | Safari Полная поддержка 5.1 | WebView Android Полная поддержка 4 | Chrome Android Полная поддержка 18 | Firefox Android Полная поддержка 15 | Opera Android Полная поддержка 12.1 | Safari iOS Полная поддержка 4.2 | Samsung Internet Android Полная поддержка 1.0 | nodejs Полная поддержка 0.10 |
getInt16 | Chrome Полная поддержка 9 | Edge Полная поддержка 12 | Firefox Полная поддержка 15 | IE Полная поддержка 10 | Opera Полная поддержка 12.1 | Safari Полная поддержка 5.1 | WebView Android Полная поддержка 4 | Chrome Android Полная поддержка 18 | Firefox Android Полная поддержка 15 | Opera Android Полная поддержка 12.1 | Safari iOS Полная поддержка 4.2 | Samsung Internet Android Полная поддержка 1.0 | nodejs Полная поддержка 0.10 |
getInt32 | Chrome Полная поддержка 9 | Edge Полная поддержка 12 | Firefox Полная поддержка 15 | IE Полная поддержка 10 | Opera Полная поддержка 12.1 | Safari Полная поддержка 5.1 | WebView Android Полная поддержка 4 | Chrome Android Полная поддержка 18 | Firefox Android Полная поддержка 15 | Opera Android Полная поддержка 12.1 | Safari iOS Полная поддержка 4.2 | Samsung Internet Android Полная поддержка 1.0 | nodejs Полная поддержка 0.10 |
getInt8 | Chrome Полная поддержка 9 | Edge Полная поддержка 12 | Firefox Полная поддержка 15 | IE Полная поддержка 10 | Opera Полная поддержка 12.1 | Safari Полная поддержка 5.1 | WebView Android Полная поддержка 4 | Chrome Android Полная поддержка 18 | Firefox Android Полная поддержка 15 | Opera Android Полная поддержка 12.1 | Safari iOS Полная поддержка 4.2 | Samsung Internet Android Полная поддержка 1.0 | nodejs Полная поддержка 0.10 |
getUint16 | Chrome Полная поддержка 9 | Edge Полная поддержка 12 | Firefox Полная поддержка 15 | IE Полная поддержка 10 | Opera Полная поддержка 12.1 | Safari Полная поддержка 5.1 | WebView Android Полная поддержка 4 | Chrome Android Полная поддержка 18 | Firefox Android Полная поддержка 15 | Opera Android Полная поддержка 12.1 | Safari iOS Полная поддержка 4.2 | Samsung Internet Android Полная поддержка 1.0 | nodejs Полная поддержка 0.10 |
getUint32 | Chrome Полная поддержка 9 | Edge Полная поддержка 12 | Firefox Полная поддержка 15 | IE Полная поддержка 10 | Opera Полная поддержка 12.1 | Safari Полная поддержка 5.1 | WebView Android Полная поддержка 4 | Chrome Android Полная поддержка 18 | Firefox Android Полная поддержка 15 | Opera Android Полная поддержка 12.1 | Safari iOS Полная поддержка 4.2 | Samsung Internet Android Полная поддержка 1.0 | nodejs Полная поддержка 0.10 |
getUint8 | Chrome Полная поддержка 9 | Edge Полная поддержка 12 | Firefox Полная поддержка 15 | IE Полная поддержка 10 | Opera Полная поддержка 12.1 | Safari Полная поддержка 5.1 | WebView Android Полная поддержка 4 | Chrome Android Полная поддержка 18 | Firefox Android Полная поддержка 15 | Opera Android Полная поддержка 12.1 | Safari iOS Полная поддержка 4.2 | Samsung Internet Android Полная поддержка 1.0 | nodejs Полная поддержка 0.10 |
setBigInt64 | Chrome Полная поддержка 67 | Edge Полная поддержка 79 | Firefox Полная поддержка 68 | IE Нет поддержки Нет | Opera Полная поддержка 54 | Safari Нет поддержки Нет | WebView Android Полная поддержка 67 | Chrome Android Полная поддержка 67 | Firefox Android Полная поддержка 68 | Opera Android Полная поддержка 48 | Safari iOS Нет поддержки Нет | Samsung Internet Android Полная поддержка 9.0 | nodejs Полная поддержка 10.4.0 |
setBigUint64 | Chrome Полная поддержка 67 | Edge Полная поддержка 79 | Firefox Полная поддержка 68 | IE Нет поддержки Нет | Opera Полная поддержка 54 | Safari Нет поддержки Нет | WebView Android Полная поддержка 67 | Chrome Android Полная поддержка 67 | Firefox Android Полная поддержка 68 | Opera Android Полная поддержка 48 | Safari iOS Нет поддержки Нет | Samsung Internet Android Полная поддержка 9.0 | nodejs Полная поддержка 10.4.0 |
setFloat32 | Chrome Полная поддержка 9 | Edge Полная поддержка 12 | Firefox Полная поддержка 15 | IE Полная поддержка 10 | Opera Полная поддержка 12.1 | Safari Полная поддержка 5.1 | WebView Android Полная поддержка 4 | Chrome Android Полная поддержка 18 | Firefox Android Полная поддержка 15 | Opera Android Полная поддержка 12.1 | Safari iOS Полная поддержка 4.2 | Samsung Internet Android Полная поддержка 1.0 | nodejs Полная поддержка 0.10 |
setFloat64 | Chrome Полная поддержка 9 | Edge Полная поддержка 12 | Firefox Полная поддержка 15 | IE Полная поддержка 10 | Opera Полная поддержка 12.1 | Safari Полная поддержка 5.1 | WebView Android Полная поддержка 4 | Chrome Android Полная поддержка 18 | Firefox Android Полная поддержка 15 | Opera Android Полная поддержка 12.1 | Safari iOS Полная поддержка 4.2 | Samsung Internet Android Полная поддержка 1.0 | nodejs Полная поддержка 0.10 |
setInt16 | Chrome Полная поддержка 9 | Edge Полная поддержка 12 | Firefox Полная поддержка 15 | IE Полная поддержка 10 | Opera Полная поддержка 12.1 | Safari Полная поддержка 5.1 | WebView Android Полная поддержка 4 | Chrome Android Полная поддержка 18 | Firefox Android Полная поддержка 15 | Opera Android Полная поддержка 12.1 | Safari iOS Полная поддержка 4.2 | Samsung Internet Android Полная поддержка 1.0 | nodejs Полная поддержка 0.10 |
setInt32 | Chrome Полная поддержка 9 | Edge Полная поддержка 12 | Firefox Полная поддержка 15 | IE Полная поддержка 10 | Opera Полная поддержка 12.1 | Safari Полная поддержка 5.1 | WebView Android Полная поддержка 4 | Chrome Android Полная поддержка 18 | Firefox Android Полная поддержка 15 | Opera Android Полная поддержка 12.1 | Safari iOS Полная поддержка 4.2 | Samsung Internet Android Полная поддержка 1.0 | nodejs Полная поддержка 0.10 |
setInt8 | Chrome Полная поддержка 9 | Edge Полная поддержка 12 | Firefox Полная поддержка 15 | IE Полная поддержка 10 | Opera Полная поддержка 12.1 | Safari Полная поддержка 5.1 | WebView Android Полная поддержка 4 | Chrome Android Полная поддержка 18 | Firefox Android Полная поддержка 15 | Opera Android Полная поддержка 12.1 | Safari iOS Полная поддержка 4.2 | Samsung Internet Android Полная поддержка 1.0 | nodejs Полная поддержка 0.10 |
setUint16 | Chrome Полная поддержка 9 | Edge Полная поддержка 12 | Firefox Полная поддержка 15 | IE Полная поддержка 10 | Opera Полная поддержка 12.1 | Safari Полная поддержка 5.1 | WebView Android Полная поддержка 4 | Chrome Android Полная поддержка 18 | Firefox Android Полная поддержка 15 | Opera Android Полная поддержка 12.1 | Safari iOS Полная поддержка 4.2 | Samsung Internet Android Полная поддержка 1.0 | nodejs Полная поддержка 0.10 |
setUint32 | Chrome Полная поддержка 9 | Edge Полная поддержка 12 | Firefox Полная поддержка 15 | IE Полная поддержка 10 | Opera Полная поддержка 12.1 | Safari Полная поддержка 5.1 | WebView Android Полная поддержка 4 | Chrome Android Полная поддержка 18 | Firefox Android Полная поддержка 15 | Opera Android Полная поддержка 12.1 | Safari iOS Полная поддержка 4.2 | Samsung Internet Android Полная поддержка 1.0 | nodejs Полная поддержка 0.10 |
setUint8 | Chrome Полная поддержка 9 | Edge Полная поддержка 12 | Firefox Полная поддержка 15 | IE Полная поддержка 10 | Opera Полная поддержка 12.1 | Safari Полная поддержка 5.1 | WebView Android Полная поддержка 4 | Chrome Android Полная поддержка 18 | Firefox Android Полная поддержка 15 | Opera Android Полная поддержка 12.1 | Safari iOS Полная поддержка 4.2 | Samsung Internet Android Полная поддержка 1.0 | nodejs Полная поддержка 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);
Также
- jDataView: JavaScript library that polyfills and extends the
DataViewAPI to all browsers and Node.js. ArrayBufferSharedArrayBuffer