Как проверить, является ли объект экземпляром определенного класса (функции-конструктора)?

Этот вопрос проверяет знание разработчика о том, как в JavaScript можно определить, был ли объект создан с помощью определенного конструктора или является потомком другого объекта через цепочку прототипов.

Короткий ответ

Для проверки, является ли объект экземпляром определенного класса или функции-конструктора, используется оператор instanceof. Он проверяет, есть ли в цепочке прототипов объекта ссылка на прототип конструктора.

Длинный ответ

Оператор instanceof в JavaScript позволяет проверить, был ли объект создан с помощью определенной функции-конструктора или унаследовал от нее через прототипы. Он работает по цепочке прототипов объекта, проверяя, есть ли у него в прототипах ссылка на прототип функции-конструктора.

 

Пример:

function Animal() {} 
function Dog() {} 

Dog.prototype = Object.create(Animal.prototype); 

const myDog = new Dog(); 
console.log(myDog instanceof Dog); // true 

console.log(myDog instanceof Animal); // true 
console.log(myDog instanceof Object); // true

Здесь объект myDog был создан через конструктор Dog, но благодаря наследованию от Animal, он также является экземпляром Animal. Оператор instanceof проходит по цепочке прототипов и проверяет, ссылаются ли они на соответствующий прототип.

 

Этот оператор полезен для определения типов объектов и работы с ними в зависимости от их происхождения.

Уровень

  • Рейтинг:

    3

  • Сложность:

    6

Навыки

  • JavaScript

    JavaScript

Ключевые слова

Подпишись на React Developer в телеграм