DataView

Объект для представления бинарных данных из буфера в нужном порядке байтов.

Время чтения: меньше 5 мин

Это незавершённая статья. Вы можете помочь её закончить! Почитайте о том, как контрибьютить в Доку.

Кратко

Скопировано

Объект, который предоставляет низкоуровневое API (Application Programming Interface, интерфейс программирования приложения) для записи и чтения данных из ArrayBuffer или SharedArrayBuffer. Является частью типизированного массива.

Типизированные массивы упрощают работу с тяжёлыми данными, например, видео, аудио и анимациями. Их часто используют с различными API — WebGL, Canvas 2D, XMLHttpRequest2 и так далее.

Пример

Скопировано
        
          
          const littleEndian = (() => {  const buffer = new ArrayBuffer(2)  new DataView(buffer).setInt16(0, 256, true)  return new Int16Array(buffer)[0] === 256})()console.log(littleEndian)// true или false
          const littleEndian = (() => {
  const buffer = new ArrayBuffer(2)
  new DataView(buffer).setInt16(0, 256, true)

  return new Int16Array(buffer)[0] === 256
})()

console.log(littleEndian)
// true или false

        
        
          
        
      

Как пишется

Скопировано

DataView, как и TypedArray, используют для представления данных из ArrayBuffer. Этот объект позволяет контролировать порядок байтов, который может не совпадать с их порядком в операционной системе пользователя. К примеру, через DataView можно установить порядок от младшего к старшему (little-endian) или смешанный (middle-endian).

Чтобы создать DataView, обязательно используйте оператор new. Обратите внимание, что значение DataView нельзя изменять. Оно устанавливается один раз при создании объекта.

Свойства

Скопировано
  • buffer — на какой ArrayBuffer ссылается представление. Только для чтения.
  • byteLength — размер представления в байтах. Только для чтения.
  • byteOffset — смещение представления в байтах от начального значения в ArrayBuffer. Только для чтения.

Методы

Скопировано

В качестве методов используют разные числовые форматы. Методы get() читают данные из нужного буфера, а set() их записывают. Например, .getInt8(), .getUnit8(), .setFloat64(), .setBigInt64().

Список всех методов DataView.

Как понять

Скопировано

Порядок байтов (endianness) — последовательность байтов, в которой информация хранится в памяти компьютера. По умолчанию используется порядок от старшего к младшему (big-endian).

Про память подробнее узнаете из статьи «Как устроена память».