Встречается на собеседованиях • сегодня

Как работает наследование в JS

В JavaScript наследование реализовано через цепочку прототипов (prototype chain).

Основные моменты:

  • Каждый объект имеет скрытое свойство [[Prototype]], которое ссылается на его прототип
  • При обращении к свойству объекта, если его нет в самом объекте, поиск идет по цепочке прототипов
  • Для установки прототипа используется Object.create() или __proto__ (устаревший способ)

Пример:

js
function Animal(name) {
  this.name = name;
}

Animal.prototype.speak = function() {
  console.log(`${this.name} makes a noise`);
};

function Dog(name) {
  Animal.call(this, name); // вызов родительского конструктора
}

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

const dog = new Dog('Rex');
dog.speak(); // Rex makes a noise

В ES6 появился синтаксис классов, который упрощает наследование:

js
class Animal {
  constructor(name) {
    this.name = name;
  }
  speak() {
    console.log(`${this.name} makes a noise`);
  }
}

class Dog extends Animal {
  speak() {
    super.speak();
    console.log(`${this.name} barks`);
  }
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы