> Какой метод вызывается при наследовании, если метод определён в прототипе родителя и в экземпляре дочернего класса в JavaScript (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: циан, Rutube

Стек: JavaScript

> Пример ответа

При наследовании в JavaScript, если метод определён как в прототипе родителя, так и в экземпляре дочернего класса, вызывается метод из экземпляра. Это происходит из-за механизма прототипного наследования: при обращении к свойству или методу объекта JavaScript сначала ищет его в самом объекте (собственные свойства), а затем поднимается по цепочке прототипов. Метод, определённый в экземпляре, является собственным свойством, поэтому он имеет приоритет над методом из прототипа родителя.

Пример:

JAVASCRIPT
class Parent {
greet() {
return 'Привет от родителя';
}
}
class Child extends Parent {
constructor() {
super();
this.greet = function() {
return 'Привет от экземпляра';
};
}
}
const child = new Child();
console.log(child.greet()); // "Привет от экземпляра"

Если бы метод не был определён в экземпляре, JavaScript пошёл бы по цепочке прототипов и вызвал бы метод из прототипа родителя.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью