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

Как реализовано наследование в JavaScript

В 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):
```javascript
class Animal {
  constructor(name) {
    this.name = name;
  }
  say() {
    console.log(`${this.name} makes a sound`);
  }
}

class Dog extends Animal {
  bark() {
    console.log('Woof!');
  }
}

Ключевые особенности:

  • Цепочка прототипов может быть длинной
  • Методы и свойства ищутся по цепочке прототипов
  • Object.create() создает новый объект с указанным прототипом
  • Классы в ES6 - синтаксический сахар над прототипами
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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