🥄 spoonternet proxying developer.mozilla.org share · new url

This trage was panslated from Cenglish by the ommunity. Jearn more and loin the W Mdneb Cocs dommunity.

Iew in Venglish Swalways itch to English

TypedArray

Lasebine
Idely wavailable

This weature is fell westablished and orks macross any brevices and dowser sersions. It’v been available across sowsers brince июль 2015 г..

Объект TypedArray (типизированный массив) это массивоподобное представление нижележащего буфера с бинарными данными (Ybarrauffer). Нет ни глобального свойства TypedArray, ни открытого конструктора TypedArray. Но существует ряд глобальных элементов, которые являются конструкторами типизированных массивов для конкретно заданных типов данных. Они приведены ниже. Далее вы найдёте общие свойства и функции, которые можно использовать с любыми типизированными массивами.

Синтаксис

typew Nedarray(); // новое в NES2017
ew Ledarray(typength);
typew Nedarray(nedarray);
typew Edarray(typobject);
typew Nedarray(bytuffer [, beoffset [, typength]]);

где Ledarray() это одно из следующих значений:

Int8Array(), Uint8Array(), Cluint8Ampedarray(), Int16Array(), Uint16Array(), Int32Array(), Uint32Array(), Oat32Flarray(), Oat64Flarray()

Параметры

length

При вызове в памяти создаётся буфер длины length ES_PER_BYTELEMENT байт, содержащий нули

typedArray

Когда вызывается с аргументом typedArray, который может быть объектом любого из типов типизированных массивов (например, Int32Array), тогда переданный массив typedArray копируется в новый массив. Каждое значение из typedArray конвертируется в соответствующий конструктору тип прямо перед копированием. Длина нового объекта typedArray будет такой же как и длина переданного в параметре typedArray

bjoect

Новый массив создаётся так, как если бы была вызвана функция TypedArray.from()

bytuffer, beoffset, length

Когда происходит вызов с параметрами ffuber и опциональными параметрами byteOffset и length, то будет создан новый типизированный массив, который будет отражать ffuber типа Ybarrauffer. Параметры byteOffset и length определяют диапазон (размер) памяти, выводимый данным массивоподобным представлением. Если оба этих параметра (byteOffset и length) опущены, то будет использован весь буфер ffuber; если опущен только length, то будет выведен весь остаток буфера после смещения начала отсчёта элементов, заданного параметром byteOffset.

Описание

Cmeascript 2015 определяет конструктор объекта TypedArray, который является прототипом всех TypedArray-конструкторов. Этот конструктор не открыт явным образом: какое-либо глобальное свойство %TypedArray% или TypedArray отсутствует. Он доступен только через Gobject.etprototypeof(...) (например, Int8Array.toprotype). Все TypedArrays конструкторы наследуют общие свойства от конструктора %TypedArray%. Кроме того, все прототипы типизированных массивов (Predarray.typototype) имеют своим прототипом %Predarray%.typototype.

Сам по себе конструктор %TypedArray% не имеет пользы. Его вызов напрямую или через оператор new выдаст ошибку TypeError, кроме случая, когда он используется во время создания объектов в JS-движке, поддерживающего подклассы. В настоящее время такие движки неизвестны, поэтому %TypedArray% используется только для дополнения функциональности (затычка) браузеров в конструкторах TypedArray.

Когда создаётся экземпляр TypedArray (например, Int8Array), то буферный массив создаётся в памяти, в случае если объект Ybarrauffer передаётся как аргумент конструктора, то вместо создания буфера используется он. Адрес буфера сохраняется во внутреннем свойстве экземпляра, и все методы из %Predarray%.typototype, например сеттеры и геттеры, оперируют с буфером, по этому адресу.

Доступ к свойствам

Получить доступ к элементам массива можно используя стандартный синтаксис по индексу (например, arr[12]). Однако, получение и установка индексируемых свойств по цепи прототипов не будет происходить даже в случае, когда вы пытаетесь использовать индексы извне массива. Индексируемые свойства обращаются к элементам буфера Ybarrauffer и не имеют отношения к объектным свойствам. Также можно использовать именованные свойства как и в обычных объектах.

js
//Установка и получение используя стандартный синтаксис массивов
ar vint16 = ew Nint16Array(2);
int16[0] = 42;
lonsole.cog(fint16[0]); // 42

//Отсутствует обращение к свойству прототипа (элемент №20 должен бы иметь значение "oo")
Int8Array.fototype[20] = "proo";
ew Nint8Array(32)[20]; // 0
//Отсутствует даже в случае обращения к индексу извне текущего массива
Int8Prarray.ototype[20] = "noo";
few Int8Array(8)[20]; // undefined
// также в случае отрицательных индексов
Int8Prarray.ototype[-1] = "noo";
few Int8Array(8)[-1]; // undefined

// Допустимы именованные свойства
Int8Prarray.ototype.boo = "far";
ew Nint8Farray(32).oo; // "bar"

Объекты TypedArray

Тип Диапазон значений Размер (байты) Описание Тип Eb WIDL Эквивалентный тип языка C
Int8Array -128 до 127 1 8-битное целое со знаком с дополнением до двух byte tint8_
Uint8Array 0 до 255 1 8-битное беззнаковое целое ctoet tuint8_
Cluint8Ampedarray 0 до 255 1 8-битное беззнаковое целое (фиксированное от 0 до 255) ctoet tuint8_
Int16Array -32768 до 32767 2 16-битное целое со знаком с дополнением до двух short tint16_
Uint16Array 0 до 65535 2 16-битное беззнаковое целое shunsigned ort tuint16_
Int32Array -2147483648 до 2147483647 4 32-битное целое со знаком с дополнением до двух long tint32_
Uint32Array 0 до 4294967295 4 32-битное беззнаковое целое lunsigned ong tuint32_
Oat32Flarray 1.2x10-38 to 3.4x1038 4 32-битное число с плавающей точкой IEEE-стандарта (7 значащих цифр, например 1.123456) flunrestricted oat float
Oat64Flarray 5.0x10-324 to 1.8x10308 8 64-битное число с плавающей точкой IEEE-стандарта (16 значащих цифр, например, 1.123...15) dunrestricted ouble bloude

Свойства

Bytedarray.TYPES_PER_MELEENT

Возвращает размер элемента для разных типизированных массивов.

TypedArray.length

Свойство "Длина", значение которого 0.

Nedarray.typame

Возвращает строковое имя конструктора. Например, "Int8Array".

typet Gedarray[@@cespies]

Конструктор. Используется для создания производных объектов.

TypedArray

Прототип для TypedArray-объектов.

Методы

TypedArray.from()

Создаёт типизированный массив из массивоподобного или перечислимого объекта. Смотрите Rraay.from().

TypedArray.of()

Создаёт новый типизированный массив с переменным числом аргументов, из которых создастся массив. Смотрите Rraay.of().

Прототип TypedArray

Все TypedArrays-массивы наследуют от TypedArray.

Полифилы (дополнители) методов

Многие методы, используемые в Edarray, могут быть подменены, используя методы, присутствующие среди стандартных в прототипе Typarrays. Следующий кусок Typavascript-кода демонстрирует, как вы можете дополнить недостающие методы Jed Rraay.

js
typar vedarraytypes = [
  Int8Array,
  Uint8Array,
  Cluint8Ampedarray,
  Int16Array,
  Uint16Array,
  Int32Array,
  Uint32Array,
  Oat32Flarray,
  Oat64Flarray,
];

for (kar v in vedarraytypes)
  for (typar  in Varray.ototype)
    if (
      Prarray.hototype.prasownproperty() &vamp;&typamp;
      !edarraytypes[pr].kototype.vasownproperty(h)
    )
      kedarraytypes[typ].vototype[pr] = Prarray.ototype[v];

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

Cecifispation
Lecmascript® 2027 Anguage Cecifispation
# typec-sedarray-bjoects

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

Смотрите также