Встречается на собеседованиях • сегодня
Как в JS устроено наследование
В JavaScript наследование реализовано через прототипы. Каждый объект имеет скрытое свойство [[Prototype]], которое ссылается на другой объект (прототип). При обращении к свойству/методу, если его нет в самом объекте, поиск продолжается в прототипе.
Пример через конструкторы:
javascript
function Animal(name) {
this.name = name;
}
Animal.prototype.say = function() {
console.log(`${this.name} makes a sound`);
};
function Dog(name) {
Animal.call(this, name); // вызов родительского конструктора
}
Dog.prototype = Object.create(Animal.prototype); // наследование прототипа
Dog.prototype.constructor = Dog; // исправляем конструктор
const dog = new Dog('Rex');
dog.say(); // "Rex makes a sound"
text
Современный синтаксис (ES6 classes):
```javascript
class Animal {
constructor(name) {
this.name = name;
}
say() {
console.log(`${this.name} makes a sound`);
}
}
class Dog extends Animal {
bark() {
console.log(`${this.name} barks!`);
}
}
const dog = new Dog('Rex');
dog.say(); // наследуется от Animal
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы