Junior
61
questionbank

Что проверяет оператор instanceof в JavaScript?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Оператор instanceof в JavaScript проверяет, является ли объект экземпляром определенного класса или конструктора.

Принцип работы:

  1. Оператор instanceof проверяет наличие prototype конструктора в цепочке прототипов объекта.
  2. Если prototype конструктора присутствует в цепочке, результат true.
  3. В противном случае результат false.

Примеры:

javascript

Особенности:

  • instanceof работает через цепочку прототипов, поэтому результат может быть true для родительских конструкторов.
  • Для примитивных типов (string, number, boolean, null, undefined, symbol, bigint), instanceof обычно возвращает false, если они не были созданы через соответствующий объект-обертку (new String(), new Number() и т.д.).
  • Может быть неточным при работе с разными контекстами выполнения JavaScript (например, разными окнами браузера или iframe), так как каждый контекст имеет свои собственные конструкторы.

Аналогичные подходы для проверки типа:

  • typeof: Возвращает строку, указывающую на базовый тип данных (string, number, boolean, object, function, undefined, symbol, bigint). Не подходит для проверки принадлежности к конкретному классу.
  • Object.prototype.toString.call(): Возвращает более точную строку с типом объекта ("[object Array]", "[object Date]" и т.д.).

В целом, instanceof полезен для проверки принадлежности объекта к конкретному классу или его предку в иерархии наследования.