Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

Эта страница была переведена с английского языка силами сообщества. Вы тоже можете внести свой вклад, присоединившись к русскоязычному сообществу MDN Web Docs.

TypedArray

BaselineWidely available *

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

Синтаксис

new TypedArray(); // новое в ES2017new TypedArray(length);new TypedArray(typedArray);new TypedArray(object);new TypedArray(buffer [, byteOffset [, length]]);где TypedArray() это одно из следующих значений:Int8Array(), Uint8Array(), Uint8ClampedArray(), Int16Array(), Uint16Array(), Int32Array(), Uint32Array(), Float32Array(), Float64Array()

Параметры

length

При вызове в памяти создаётся буфер длиныlengthBYTES_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 и не имеют отношения к объектным свойствам. Также можно использовать именованные свойства как и в обычных объектах.

js
//Установка и получение используя стандартный синтаксис массивовvar int16 = new Int16Array(2);int16[0] = 42;console.log(int16[0]); // 42//Отсутствует обращение к свойству прототипа (элемент №20 должен бы иметь значение "foo")Int8Array.prototype[20] = "foo";new Int8Array(32)[20]; // 0//Отсутствует даже в случае обращения к индексу извне текущего массиваInt8Array.prototype[20] = "foo";new Int8Array(8)[20]; // undefined// также в случае отрицательных индексовInt8Array.prototype[-1] = "foo";new Int8Array(8)[-1]; // undefined// Допустимы именованные свойстваInt8Array.prototype.foo = "bar";new Int8Array(32).foo; // "bar"

Объекты TypedArray

ТипДиапазон значенийРазмер (байты)ОписаниеТип Web IDLЭквивалентный тип языка C
Int8Array-128 до 12718-битное целое со знаком с дополнением до двухbyteint8_t
Uint8Array0 до 25518-битное беззнаковое целоеoctetuint8_t
Uint8ClampedArray0 до 25518-битное беззнаковое целое (фиксированное от 0 до 255)octetuint8_t
Int16Array-32768 до 32767216-битное целое со знаком с дополнением до двухshortint16_t
Uint16Array0 до 65535216-битное беззнаковое целоеunsigned shortuint16_t
Int32Array-2147483648 до 2147483647432-битное целое со знаком с дополнением до двухlongint32_t
Uint32Array0 до 4294967295432-битное беззнаковое целоеunsigned longuint32_t
Float32Array1.2x10-38 to 3.4x1038432-битное число с плавающей точкой IEEE-стандарта (7 значащих цифр, например 1.123456)unrestricted floatfloat
Float64Array5.0x10-324 to 1.8x10308864-битное число с плавающей точкой IEEE-стандарта (16 значащих цифр, например, 1.123...15)unrestricted doubledouble

Свойства

TypedArray.BYTES_PER_ELEMENT

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

TypedArray.length

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

TypedArray.name

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

get TypedArray[@@species]

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

TypedArray.prototype

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

Методы

TypedArray.from()

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

TypedArray.of()

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

Прототип TypedArray

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

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

Многие методы, используемые в TypedArray, могут быть подменены, используя методы, присутствующие среди стандартных в прототипе Arrays. Следующий кусок Javascript-кода демонстрирует, как вы можете дополнить недостающие методы Typed Array.

js
var typedArrayTypes = [  Int8Array,  Uint8Array,  Uint8ClampedArray,  Int16Array,  Uint16Array,  Int32Array,  Uint32Array,  Float32Array,  Float64Array,];for (var k in typedArrayTypes)  for (var v in Array.prototype)    if (      Array.prototype.hasOwnProperty(v) &&      !typedArrayTypes[k].prototype.hasOwnProperty(v)    )      typedArrayTypes[k].prototype[v] = Array.prototype[v];

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

Specification
ECMAScript® 2026 Language Specification
# sec-typedarray-objects

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

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

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp