Чому оператор instanceof потрібен у JavaScript
Що таке instanceof
Оператор instanceof в JavaScript перевіряє, чи належить об'єкт до конкретного класу (або функції-конструктора) у його ланцюгу прототипів.
Синтаксис:
javascript
obj instanceof Constructorobj— об'єкт, який ми перевіряємо.Constructor— функція-конструктор або клас.
Оператор повертає true, якщо об'єкт obj знаходиться в ланцюзі прототипів конструктора Constructor.
Приклад
javascript
function Animal() {}
function Dog() {}
const rex = new Dog();
console.log(rex instanceof Dog); // true
console.log(rex instanceof Animal); // falseЯкщо Dog успадковував від Animal, то rex instanceof Animal було б true.
Як це працює
Оператор instanceof працює так:
- Береться
obj.__proto__. - Порівнюється з
Constructor.prototype. - Якщо вони збігаються — повертає
true. - Якщо ні — піднімається по ланцюгу
__proto__і повторює.
Не плутайте з typeof
javascript
typeof [] // "object"
[] instanceof Array // trueВисновок
- Використовуйте
instanceof, щоб зрозуміти, чи належить об'єкт до конкретного типу або був створений за допомогоюnew SomeConstructor. - Це потужний інструмент, але не єдиний спосіб перевірки типу (наприклад,
Object.prototype.toString.call(...)також популярний). - Будьте обережні в сценаріях крос-середовища —
instanceofможе поводитися непередбачувано.
Важливо:
instanceof працює лише з об'єктами, створеними за допомогою new або з явно встановленим prototype. Не працює з примітивами.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.