Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: Array.isArray, instanceof, Object.prototype.toString, constructor, type checking

Какие ещё способы есть для проверки, является ли значение массивом, помимо Array.isArray?

Вопрос проверяет знание альтернативных способов определения массива в JavaScript, помимо стандартного Array.isArray.

Короткий ответ

Помимо Array.isArray, можно использовать оператор instanceof ([] instanceof Array), но он может давать ложные результаты при работе с несколькими фреймами или iframe. Другой способ — Object.prototype.toString.call(value) === '[object Array]', который более надёжен. Также можно проверить свойство constructor: value.constructor === Array, но оно может быть изменено. Array.isArray остаётся предпочтительным методом.

Длинный ответ

Альтернативные способы проверки массива в JavaScript

В JavaScript существует несколько способов определить, является ли значение массивом. Хотя Array.isArray является современным и надёжным методом, знание альтернатив помогает лучше понять внутреннее устройство языка и решать специфические задачи.

1. Оператор instanceof

Оператор instanceof проверяет, принадлежит ли объект к определённому классу, проверяя цепочку прототипов:

const arr = [1, 2, 3];
console.log(arr instanceof Array); // true

const obj = {};
console.log(obj instanceof Array); // false

Недостаток: при работе с несколькими глобальными контекстами (например, iframe) instanceof может дать false, так как Array из другого контекста отличается.

2. Object.prototype.toString.call()

Этот метод возвращает строку вида '[object Type]', где Type — внутренний тип объекта:

const arr = [1, 2, 3];
console.log(Object.prototype.toString.call(arr)); // '[object Array]'

function isArray(value) {
  return Object.prototype.toString.call(value) === '[object Array]';
}

Этот способ работает во всех контекстах и считается надёжным, но менее читаем, чем Array.isArray.

3. Проверка свойства constructor

Можно проверить, равен ли конструктор объекта Array:

const arr = [1, 2, 3];
console.log(arr.constructor === Array); // true

// Однако constructor может быть изменён:
arr.constructor = Object;
console.log(arr.constructor === Array); // false

Этот метод ненадёжен, так как свойство constructor может быть перезаписано.

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

Современный стандартный метод, который рекомендуется использовать:

console.log(Array.isArray([1, 2, 3])); // true
console.log(Array.isArray({})); // false

Он работает корректно во всех контекстах и является наиболее читаемым.

Вывод

Для проверки массива в большинстве случаев используйте Array.isArray. Если требуется поддержка старых браузеров или работа с несколькими фреймами, Object.prototype.toString.call() является надёжной альтернативой. Другие методы (instanceof, constructor) менее надёжны и не рекомендуются для production-кода.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    3

  • Сложность:

    3

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#Array.isArray

#instanceof

#Object.prototype.toString

#constructor

#type checking

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию