Это то, что должны знать все разработчики.

Все мы знаем, что [] 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.

  1. cat instanceof Cat
  2. cat instanceof Animal
  3. at instanceof Object

Почему «[] instanceof Object» возвращает true

Давайте вернемся к самому вопросу и вместе нарисуем простую картинку, чтобы увидеть ответ.

Как реализовать оператор instanceof?

После приведенного выше объяснения, когда интервьюер спрашивает нас, как реализовать instanceof, достаточно освоить эти знания.

  1. Прототип функции-конструктора
  2. Цепочка прототипов объекта

Решение 1

Решение 2

Решение 3

Окончательно

Спасибо, что прочитали. Я с нетерпением ждувашей подписки и новых качественных статей.



Интервьюер: Что случилось с «npm run xxx?
Секрет, о котором не знает большинство людей.javascript.plainenglish.io»









Интервьюер: Может ли «x !== x возвращать True в JavaScript?
Пять волшебных знаний в области JavaScript, о которых вы, возможно, не знали!javascript.plainenglish.io»





Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord . Заинтересованы в хакинге роста? Ознакомьтесь с разделом Схема.