Книга: JavaScript. Подробное руководство, 6-е издание

TypedArray

TypedArray[63]

массивы с двоичными элементами фиксированного размера ArrayBufferView

Типизированные массивы являются подтипами ArrayBufferView, который интерпретирует байты в объекте ArrayBuffer, на котором он основан, как массив чисел и позволяет читать и изменять элементы этого массива. Данная справочная статья описывает не какой-то конкретный тип типизированных массивов, а охватывает восемь разных видов типизированных массивов. Все эти восемь типов являются подтипами ArrayBufferView и отличаются друг от друга только количеством байтов, выделенных для одного элемента массива и способом интерпретации этих элементов. В число этих восьми типов входят:

Int8Array

Массив однобайтных элементов, которые интерпретируются как целые со знаком.

Int16Array

Массив двухбайтных элементов, которые интерпретируются как целые со знаком, с использованием порядка следования байтов, определяемого платформой.

Int32Array

Массив четырехбайтных элементов, которые интерпретируются как целые со знаком, с использованием порядка следования байтов, определяемого платформой.

Uint8Array

Массив однобайтных элементов, которые интерпретируются как целые без знака.

Uint16Array

Массив двухбайтных элементов, которые интерпретируются как целые без знака, с использованием порядка следования байтов, определяемого платформой.

Uint32Array

Массив четырехбайтных элементов, которые интерпретируются как целые без знака, с использованием порядка следования байтов, определяемого платформой.

Float32Array

Массив четырехбайтных элементов, которые интерпретируются как вещественные числа, с использованием порядка следования байтов, определяемого платформой.

Float64Array

Массив восьмибайтных элементов, которые интерпретируются как вещественные числа, с использованием порядка следования байтов, определяемого платформой.* Как следует из названий, эти типы являются объектами, подобными массивам, которые обеспечивают доступ к значениям элементов с использованием привычной формы обращения к массивам с квадратными скобками. Отметьте однако, что объекты этих типов всегда имеют фиксированную длину.

Как отмечалось в описании выше, классы TypedArray по умолчанию используют порядок следования байтов, определяемый платформой. См. описание типа DataView, предназначенного для представления ArrayBuffer, который позволяет явно определять порядок следования байтов.

Конструктор

new TypedArray(unsigned long length)
new TypedArray(TypedArray array)
new TypedArray(type[] array)
new TypedArray(Array Buffer buffer, [unsigned long byteOffset], [unsigned long length])

Для каждой из восьми разновидностей типизированных массивов имеется конструктор, который можно вызвать одним из приведенных выше четырех способов. Конструкторы действуют следующим образом:

• Если конструктор вызывается с единственным числовым аргументом, он создает новый типизированный массив с указанным количеством элементов и инициализирует каждый элемент нулем.

• Если конструктору передается единственный объект типизированного массива, он создает новый типизированный массив с тем же количеством элементов, что и в массиве в аргументе, и копирует элементы из массива в аргументе во вновь созданный массив. Тип массива в аргументе не обязательно должен совпадать с типом создаваемого массива.

• Если конструктору передается единственный массив (истинный массив), он создает новый типизированный массив с тем же количеством элементов, что и в массиве в аргументе, и копирует элементы из массива в аргументе во вновь созданный массив.

• Наконец, если конструктору передается объект ArrayBuffer с необязательными аргументами, определяющими смещение и длину, он создает новый типизированный массив, который является представлением указанной области объекта ArrayBuffer. Длина нового типизированного массива зависит от размера области в ArrayBuffer и размера элементов в типизированном массиве.

Константы

long BYTE$_PER_ELEMENT

Количество байтов, занимаемых каждым элементом данного массива в лежащем в основе объекте ArrayBuffer. Эта константа будет иметь значение 1, 2, 4 или 8, в зависимости от вида типизированного массива.

Свойства

readonly unsigned long length

Количество элементов в массиве. Типизированные массивы имеют фиксированный размер, поэтому значение этого свойства никогда не изменяется. Не путайте это свойство со свойством byteLength, унаследованным от ArrayBufferView.

Методы

void set(TypedArray array, [unsigned long offset])

Копирует элементы массива array в данный типизированный массив, начиная с индекса offset.

void set(number[] array, [unsigned long offset])

Эта версия метода set() подобна предыдущей, но принимает не типизированный, а истинный массив.

TypedArray subarray(long start, long end)

Возвращает новый типизированный массив, опирающийся на тот же объект ArrayBuffer, что и данный массив. Первым элементом возвращаемого массива является элемент данного массива с индексом start. А последним - элемент данного массива с индексом end-1. Отрицательные значения в аргументах start и end интерпретируются как смещения относительно конца данного массива.

Оглавление книги


Генерация: 1.709. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз