Spec-Zone.ru › JavaScript

Array.of()

Baseline Широко доступен

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с сентября 2016 года.

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

Попробуйте

console.log(Array.of("foo", 2, "bar", true));
// Expected output: Array ["foo", 2, "bar", true]

console.log(Array.of());
// Expected output: Array []

Синтаксис

Array.of()
Array.of(element1)
Array.of(element1, element2)
Array.of(element1, element2, /* …, */ elementN)

Параметры

element1, …, elementN
Элементы, используемые для создания массива.

Возвращаемое значение

Новый экземпляр Array.

Описание

Разница между Array.of() и конструктором Array() заключается в обработке одиночных аргументов: Array.of(7) создает массив с одним элементом, 7, в то время как Array(7) создает пустой массив со свойством length, равным 7. (Это подразумевает массив из 7 пустых слотов, а не слотов с фактическими значениями undefined.)

Array.of(7); // [7]
Array(7); // array of 7 empty slots

Array.of(1, 2, 3); // [1, 2, 3]
Array(1, 2, 3); // [1, 2, 3]

Метод Array.of() является универсальным методом-фабрикой. Например, если подкласс Array наследует метод of(), унаследованный метод of() вернет новые экземпляры подкласса вместо экземпляров Array. Фактически, значение this может быть любой конструкторной функцией, которая принимает один аргумент, представляющий длину нового массива, и конструктор будет вызван с количеством аргументов, переданных в of(). Окончательное значение length будет установлено снова после назначения всех элементов. Если значение this не является конструкторной функцией, вместо нее используется обычный конструктор Array.

Примеры

Использование Array.of()

Array.of(1); // [1]
Array.of(1, 2, 3); // [1, 2, 3]
Array.of(undefined); // [undefined]

Вызов of() на не-массивных конструкторах

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

function NotArray(len) {
  console.log("NotArray called with length", len);
}

console.log(Array.of.call(NotArray, 1, 2, 3));
// NotArray called with length 3
// NotArray { '0': 1, '1': 2, '2': 3, length: 3 }

console.log(Array.of.call(Object)); // [Number: 0] { length: 0 }

Когда значение this не является конструктором, возвращается обычный объект Array.

console.log(Array.of.call({}, 1)); // [ 1 ]

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

Спецификация
ECMAScript® 2027 Language Specification
# sec-array.of

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

Desktop Mobile Server
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
of
45
12
25
26
9
39
25
26
9
4.0
39
9
1.0.0
1.0
4.0.0

См. также

  • Polyfill Array.of в core-js
  • es-shims polyfill Array.of
  • Руководство по индексированным коллекциям
  • Array
  • Array()
  • Array.from()
  • TypedArray.of()

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API