Это то, что должны знать все разработчики.
Все мы знаем, что [] instanceof Array возвращает true, но почему [] instanceof Object также возвращает true?
Друзья, если бы вам задали этот вопрос в интервью, как бы вы на него ответили?
Что такое instanceof?
Давайте посмотрим на объяснение на MDN:
«Оператор instanceofпроверяет, появляется ли свойство прототипа конструктора где-либо в цепочке прототипов объекта. Возвращаемое значение является логическим значением. Его поведение можно настроить с помощью Symbol.hasInstance».
Итак, почему cat instanceof Cat возвращает true? Это очень просто, и будет легче понять, если мы нарисуем картинку.

Поскольку Cat.prototype появляется в цепочке прототипов cat, правильно вернуть true.
Рассмотрим более сложный пример:

Из этого рисунка мы можем ясно объяснить, почему все три выражения возвращают true, потому что Cat.prototype, Animal.prototype, Object.prototype появляются в прототипе cat, поэтому результат равен true.
cat instanceof Catcat instanceof Animalat instanceof Object
Почему «[] instanceof Object» возвращает true
Давайте вернемся к самому вопросу и вместе нарисуем простую картинку, чтобы увидеть ответ.

Как реализовать оператор instanceof?
После приведенного выше объяснения, когда интервьюер спрашивает нас, как реализовать instanceof, достаточно освоить эти знания.
- Прототип функции-конструктора
- Цепочка прототипов объекта
Решение 1
Решение 2
Решение 3
Окончательно
Спасибо, что прочитали. Я с нетерпением ждувашей подписки и новых качественных статей.
Интервьюер: Что случилось с «npm run xxx?
Секрет, о котором не знает большинство людей.javascript.plainenglish.io»
Интервьюер: Может ли «x !== x возвращать True в JavaScript?
Пять волшебных знаний в области JavaScript, о которых вы, возможно, не знали!javascript.plainenglish.io»
Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord . Заинтересованы в хакинге роста? Ознакомьтесь с разделом Схема.