Вопрос проверяет знание альтернативных способов определения массива в JavaScript, помимо стандартного Array.isArray.
В JavaScript существует несколько способов определить, является ли значение массивом. Хотя Array.isArray является современным и надёжным методом, знание альтернатив помогает лучше понять внутреннее устройство языка и решать специфические задачи.
Оператор instanceof проверяет, принадлежит ли объект к определённому классу, проверяя цепочку прототипов:
const arr = [1, 2, 3];
console.log(arr instanceof Array); // true
const obj = {};
console.log(obj instanceof Array); // falseНедостаток: при работе с несколькими глобальными контекстами (например, iframe) instanceof может дать false, так как Array из другого контекста отличается.
Этот метод возвращает строку вида '[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.
Можно проверить, равен ли конструктор объекта Array:
const arr = [1, 2, 3];
console.log(arr.constructor === Array); // true
// Однако constructor может быть изменён:
arr.constructor = Object;
console.log(arr.constructor === Array); // falseЭтот метод ненадёжен, так как свойство constructor может быть перезаписано.
Современный стандартный метод, который рекомендуется использовать:
console.log(Array.isArray([1, 2, 3])); // true
console.log(Array.isArray({})); // falseОн работает корректно во всех контекстах и является наиболее читаемым.
Для проверки массива в большинстве случаев используйте Array.isArray. Если требуется поддержка старых браузеров или работа с несколькими фреймами, Object.prototype.toString.call() является надёжной альтернативой. Другие методы (instanceof, constructor) менее надёжны и не рекомендуются для production-кода.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию