Как работает this для прототипов объекта?

Этот вопрос проверяет понимание того, как контекст (this) ведет себя при вызове методов, унаследованных через прототипы. Важно понимать, как this ссылается на вызывающий объект, а не на прототип.

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

Когда метод вызывается на объекте, который наследует этот метод через прототип, this указывает на объект, на котором был вызван метод, а не на сам прототип. То есть, независимо от того, где определен метод — на объекте или на его прототипе — this всегда ссылается на объект, который инициировал вызов.

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

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

 

Например:

const animal = {
  speak() {
      console.log(this.name + ' speaks');  
  } 
}; 

const dog = {  name: 'Rex' }; 
dog.__proto__ = animal; 
dog.speak(); // 'Rex speaks'

Здесь метод speak был унаследован от объекта animal, но когда он вызывается через объект dog, this ссылается на dog. Таким образом, this работает с объектом, который вызвал метод, а не с объектом-прототипом.

 

Это поведение позволяет использовать общие методы для разных объектов, при этом сохраняя правильную привязку контекста.

Уровень

  • Рейтинг:

    4

  • Сложность:

    8

Навыки

  • JavaScript

    JavaScript

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

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