Задать вопрос
ErichAltheim
@ErichAltheim
Программист

Как интерпретировать this в данном примере?

function CoffeeMachine(power) {
  this.waterAmount = 0;

  var WATER_HEAT_CAPACITY = 4200;

  var self = this; // Вопрос по этой строке

  function getBoilTime() {
      return self.waterAmount * WATER_HEAT_CAPACITY * 80 / power;
    }

  function onReady() {
    alert( 'Кофе готово!' );
  }

  this.run = function() {
    setTimeout(onReady, getBoilTime());
  };

}

var coffeeMachine = new CoffeeMachine(100000);
coffeeMachine.waterAmount = 200;

coffeeMachine.run();


Выше код, взятый с сайта learn.javascript.ru - меня конкретно интересует конструкция var self = this; помогите разобраться, насколько я знаю this это ссылка на текущий объект после создания объекта но данная конструкция не работает при конкретном присвоении объекта. Я не могу понять эту строку хотя с this разобрался. Из данной ситуации сам вышел путем создания промежуточной переменной var water = 0; this.waterAmount = water; тогда все без этих спорных конструкций все прекрасно работает
  • Вопрос задан
  • 386 просмотров
Подписаться 3 Оценить Комментировать
Решение пользователя Александр Золотых К ответам на вопрос (3)
@zolotykh
web-разработчик
Когда вам необходимо обратиться к конкретному контексту из другого объекта, то используя ключевое слово this вы обратитесь к контексту текущего объекта из которого происходит обращение, именно поэтому создается альтернативная ссылка на необходимый контекст.
Ответ написан