DataView
Базовая поддержка Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Представление DataView предоставляет низкоуровневый интерфейс для чтения и записи нескольких числовых типов в бинарном ArrayBuffer, не заботясь о порядке байтов платформы.
Описание
Порядок байтов
Многобайтовые числовые форматы представляются в памяти по-разному в зависимости от архитектуры машины — см. Порядок байтов для объяснения. Аксессоры DataView обеспечивают явный контроль над тем, как осуществляется доступ к данным, независимо от порядка байтов исполняющего компьютера. Например, память WebAssembly всегда является little-endian (с младшим байтом вперед), поэтому вам следует использовать DataView вместо типизированных массивов для чтения и записи многобайтовых значений. См. WebAssembly.Memory для примера.
const littleEndian = (() => {
const 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
Примечание: DataView по умолчанию использует big-endian (с старшим байтом вперед) для чтения и записи, но большинство платформ используют little-endian (с младшим байтом вперед).
Конструктор
-
DataView() - Создает новый объект
DataView.
Свойства экземпляра
Эти свойства определены в DataView.prototype и являются общими для всех экземпляров DataView.
-
DataView.prototype.buffer - Возвращает
ArrayBuffer, на который ссылаетсяDataView. -
DataView.prototype.byteLength - Возвращает длину (в байтах)
DataView. -
DataView.prototype.byteOffset - Возвращает смещение (в байтах)
DataViewот начала егоArrayBuffer. -
DataView.prototype.constructor - Функция-конструктор, создавшая объект экземпляра. Для экземпляров
DataViewначальным значением является конструкторDataView. -
DataView.prototype[Symbol.toStringTag] - Начальное значение свойства
[Symbol.toStringTag]— это строка"DataView". Это свойство используется вObject.prototype.toString().
Методы экземпляра
-
DataView.prototype.getBigInt64() - Читает 8 байтов, начиная с указанного байтового смещения этого
DataView, и интерпретирует их как 64-битное целое число со знаком. -
DataView.prototype.getBigUint64() - Читает 8 байтов, начиная с указанного байтового смещения этого
DataView, и интерпретирует их как 64-битное целое число без знака. -
DataView.prototype.getFloat16() - Читает 2 байта, начиная с указанного байтового смещения этого
DataView, и интерпретирует их как 16-битное число с плавающей запятой. -
DataView.prototype.getFloat32() - Читает 4 байта, начиная с указанного байтового смещения этого
DataView, и интерпретирует их как 32-битное число с плавающей запятой. -
DataView.prototype.getFloat64() - Читает 8 байтов, начиная с указанного байтового смещения этого
DataView, и интерпретирует их как 64-битное число с плавающей запятой. -
DataView.prototype.getInt16() - Читает 2 байта, начиная с указанного байтового смещения этого
DataView, и интерпретирует их как 16-битное целое число со знаком. -
DataView.prototype.getInt32() - Читает 4 байта, начиная с указанного байтового смещения этого
DataView, и интерпретирует их как 32-битное целое число со знаком. -
DataView.prototype.getInt8() - Читает 1 байт по указанному байтовому смещению этого
DataViewи интерпретирует его как 8-битное целое число со знаком. -
DataView.prototype.getUint16() - Читает 2 байта, начиная с указанного байтового смещения этого
DataView, и интерпретирует их как 16-битное целое число без знака. -
DataView.prototype.getUint32() - Читает 4 байта, начиная с указанного байтового смещения этого
DataView, и интерпретирует их как 32-битное целое число без знака. -
DataView.prototype.getUint8() - Читает 1 байт по указанному байтовому смещению этого
DataViewи интерпретирует его как 8-битное целое число без знака. -
DataView.prototype.setBigInt64() - Принимает BigInt и сохраняет его как 64-битное целое число со знаком в 8 байтах, начиная с указанного байтового смещения этого
DataView. -
DataView.prototype.setBigUint64() - Принимает BigInt и сохраняет его как 64-битное целое число без знака в 8 байтах, начиная с указанного байтового смещения этого
DataView. -
DataView.prototype.setFloat16() - Принимает число и сохраняет его как 16-битное число с плавающей запятой в 2 байтах, начиная с указанного байтового смещения этого
DataView. -
DataView.prototype.setFloat32() - Принимает число и сохраняет его как 32-битное число с плавающей запятой в 4 байтах, начиная с указанного байтового смещения этого
DataView. -
DataView.prototype.setFloat64() - Принимает число и сохраняет его как 64-битное число с плавающей запятой в 8 байтах, начиная с указанного байтового смещения этого
DataView. -
DataView.prototype.setInt16() - Принимает число и сохраняет его как 16-битное целое число со знаком в 2 байтах по указанному байтовому смещению этого
DataView. -
DataView.prototype.setInt32() - Принимает число и сохраняет его как 32-битное целое число со знаком в 4 байтах по указанному байтовому смещению этого
DataView. -
DataView.prototype.setInt8() - Принимает число и сохраняет его как 8-битное целое число со знаком в байте по указанному байтовому смещению этого
DataView. -
DataView.prototype.setUint16() - Принимает число и сохраняет его как 16-битное целое число без знака в 2 байтах по указанному байтовому смещению этого
DataView. -
DataView.prototype.setUint32() - Принимает число и сохраняет его как 32-битное целое число без знака в 4 байтах по указанному байтовому смещению этого
DataView. -
DataView.prototype.setUint8() - Принимает число и сохраняет его как 8-битное целое число без знака в байте по указанному байтовому смещению этого
DataView.
Примеры
Использование DataView
const buffer = new ArrayBuffer(16); const view = new DataView(buffer, 0); view.setInt16(1, 42); view.getInt16(1); // 42
Спецификации
Совместимость с браузерами
| Десктопные | Мобильные | Серверные | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | WebView на iOS | Bun | Deno | Node.js | |
DataView |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
DataView |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
buffer |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
byteLength |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
byteOffset |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
getBigInt64 |
67 |
79 |
68 |
54 |
15 |
67 |
68 |
48 |
15 |
9.0 |
67 |
15 |
1.0.0 |
1.0 |
10.4.0 |
getBigUint64 |
67 |
79 |
68 |
54 |
15 |
67 |
68 |
48 |
15 |
9.0 |
67 |
15 |
1.0.0 |
1.0 |
10.4.0 |
getFloat16 |
135 |
135 |
129 |
120 |
18.2 |
135 |
129 |
89 |
18.2 |
29.0 |
135 |
18.2 |
1.1.23 |
1.43 |
24.0.0 |
getFloat32 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
getFloat64 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
getInt16 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
getInt32 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
getInt8 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
getUint16 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
getUint32 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
getUint8 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
setBigInt64 |
67 |
79 |
68 |
54 |
15 |
67 |
68 |
48 |
15 |
9.0 |
67 |
15 |
1.0.0 |
1.0 |
10.4.0 |
setBigUint64 |
67 |
79 |
68 |
54 |
15 |
67 |
68 |
48 |
15 |
9.0 |
67 |
15 |
1.0.0 |
1.0 |
10.4.0 |
setFloat16 |
135 |
135 |
129 |
120 |
18.2 |
135 |
129 |
89 |
18.2 |
29.0 |
135 |
18.2 |
1.1.23 |
1.43 |
24.0.0 |
setFloat32 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
setFloat64 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
setInt16 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
setInt32 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
setInt8 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
setUint16 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
setUint32 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
setUint8 |
9 |
12 |
15 |
12.1 |
5.1 |
18 |
15 |
12.1 |
5 |
1.0 |
4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView