Get to know MDN better
This page was translated from English by the community. Learn more and join the MDN Web Docs community.
This feature is well established and works across many devices and browser versions. It’s been available across browsers since июль 2015 г..
Объект TypedArray (типизированный массив) это массивоподобное представление нижележащего буфера с бинарными данными (ArrayBuffer). Нет ни глобального свойства TypedArray, ни открытого конструктора TypedArray. Но существует ряд глобальных элементов, которые являются конструкторами типизированных массивов для конкретно заданных типов данных. Они приведены ниже. Далее вы найдёте общие свойства и функции, которые можно использовать с любыми типизированными массивами.
При вызове в памяти создаётся буфер длины length BYTES_PER_ELEMENT байт, содержащий нули
typedArrayКогда вызывается с аргументом typedArray, который может быть объектом любого из типов типизированных массивов (например, Int32Array), тогда переданный массив typedArray копируется в новый массив. Каждое значение из typedArray конвертируется в соответствующий конструктору тип прямо перед копированием. Длина нового объекта typedArray будет такой же как и длина переданного в параметре typedArray
objectНовый массив создаётся так, как если бы была вызвана функция TypedArray.from()
buffer, byteOffset, lengthКогда происходит вызов с параметрами buffer и опциональными параметрами byteOffset и length, то будет создан новый типизированный массив, который будет отражать buffer типа ArrayBuffer. Параметры byteOffset и length определяют диапазон (размер) памяти, выводимый данным массивоподобным представлением. Если оба этих параметра (byteOffset и length) опущены, то будет использован весь буфер buffer; если опущен только length, то будет выведен весь остаток буфера после смещения начала отсчёта элементов, заданного параметром byteOffset.
ECMAScript 2015 определяет конструктор объекта TypedArray, который является прототипом всех TypedArray-конструкторов. Этот конструктор не открыт явным образом: какое-либо глобальное свойство %TypedArray% или TypedArray отсутствует. Он доступен только через Object.getPrototypeOf(...) (например, Int8Array.prototype). Все TypedArrays конструкторы наследуют общие свойства от конструктора %TypedArray%. Кроме того, все прототипы типизированных массивов (TypedArray.prototype) имеют своим прототипом %TypedArray%.prototype.
Сам по себе конструктор %TypedArray% не имеет пользы. Его вызов напрямую или через оператор new выдаст ошибку TypeError, кроме случая, когда он используется во время создания объектов в JS-движке, поддерживающего подклассы. В настоящее время такие движки неизвестны, поэтому %TypedArray% используется только для дополнения функциональности (затычка) браузеров в конструкторах TypedArray.
Когда создаётся экземпляр TypedArray (например, Int8Array), то буферный массив создаётся в памяти, в случае если объект ArrayBuffer передаётся как аргумент конструктора, то вместо создания буфера используется он. Адрес буфера сохраняется во внутреннем свойстве экземпляра, и все методы из %TypedArray%.prototype, например сеттеры и геттеры, оперируют с буфером, по этому адресу.
Получить доступ к элементам массива можно используя стандартный синтаксис по индексу (например, arr[12]). Однако, получение и установка индексируемых свойств по цепи прототипов не будет происходить даже в случае, когда вы пытаетесь использовать индексы извне массива. Индексируемые свойства обращаются к элементам буфера ArrayBuffer и не имеют отношения к объектным свойствам. Также можно использовать именованные свойства как и в обычных объектах.
| Int8Array | -128 до 127 | 1 | 8-битное целое со знаком с дополнением до двух | byte | int8_t |
| Uint8Array | 0 до 255 | 1 | 8-битное беззнаковое целое | octet | uint8_t |
| Uint8ClampedArray | 0 до 255 | 1 | 8-битное беззнаковое целое (фиксированное от 0 до 255) | octet | uint8_t |
| Int16Array | -32768 до 32767 | 2 | 16-битное целое со знаком с дополнением до двух | short | int16_t |
| Uint16Array | 0 до 65535 | 2 | 16-битное беззнаковое целое | unsigned short | uint16_t |
| Int32Array | -2147483648 до 2147483647 | 4 | 32-битное целое со знаком с дополнением до двух | long | int32_t |
| Uint32Array | 0 до 4294967295 | 4 | 32-битное беззнаковое целое | unsigned long | uint32_t |
| Float32Array | 1.2x10-38 to 3.4x1038 | 4 | 32-битное число с плавающей точкой IEEE-стандарта (7 значащих цифр, например 1.123456) | unrestricted float | float |
| Float64Array | 5.0x10-324 to 1.8x10308 | 8 | 64-битное число с плавающей точкой IEEE-стандарта (16 значащих цифр, например, 1.123...15) | unrestricted double | double |
Возвращает размер элемента для разных типизированных массивов.
TypedArray.lengthСвойство "Длина", значение которого 0.
TypedArray.nameВозвращает строковое имя конструктора. Например, "Int8Array".
get TypedArray[@@species]Конструктор. Используется для создания производных объектов.
TypedArray.prototypeПрототип для TypedArray-объектов.
Создаёт типизированный массив из массивоподобного или перечислимого объекта. Смотрите Array.from().
TypedArray.of()Создаёт новый типизированный массив с переменным числом аргументов, из которых создастся массив. Смотрите Array.of().
Все TypedArrays-массивы наследуют от TypedArray.prototype.
Многие методы, используемые в TypedArray, могут быть подменены, используя методы, присутствующие среди стандартных в прототипе Arrays. Следующий кусок Javascript-кода демонстрирует, как вы можете дополнить недостающие методы Typed Array.
| ECMAScript® 2027 Language Specification # sec-typedarray-objects |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 17 дек. 2024 г. by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.