Spec-Zone.ru › JavaScript

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

Спецификации

Спецификация
Спецификация языка ECMAScript® 2027
# sec-dataview-objects

Совместимость с браузерами

Десктопные Мобильные Серверные
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

См. также

  • Полифилл DataView в core-js
  • ArrayBuffer
  • SharedArrayBuffer

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API