@kirillleogky

Как работает instanceof?

5e183195b44cc380495024.png
Подскажите не могу понять почему alert( new F() instanceof F ); выведет false ?
  • Вопрос задан
  • 1136 просмотров
Решения вопроса 1
MrDecoy
@MrDecoy Куратор тега JavaScript
Верставший фронтендер
Instance - Это экземпляр.
Используя A instanceof B, Вы как бы спрашиваете: является ли А экземпляром класса B?
Классов у нас нет, но есть прототипное наследование и функции-консструкторы взамен.

Экземпляр возвращается конструктором через new неявно, или же если в конструкторе Вы строго укажите какой объект, в качестве экземпляра, будет возвращён.

В примере же указано что функция-конструктор должна возвращать себя же.
Таким образом, фукнция - не экземпляр самой себя.
Отсюда и new F() instanceof F - false;

Но!
Функции в JS являются экземплярами класса Function.
А в примере, как уже писалось выше, функция конструтор возвращает саму себя, следовательно, возвращает объект-экземпляр клаcса Function.
Отсюда и new F() instanceof Function - true;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
Brightdata Тель-Авив
от 5 500 до 6 500 $
Rocket Брянск
от 60 000 до 100 000 ₽
27 мая 2024, в 18:34
1000 руб./за проект
27 мая 2024, в 18:33
15000 руб./за проект
18 мая 2024, в 11:01
40000 руб./за проект