JackShcherbakov
@JackShcherbakov

Для чего нужен bind?

Не понимание предназначения bind. История такова:
Читаю учебник. Там приводится вот такой код для привязки контекста:
function bind(func, context) {
  return function() {
    return func.apply(context, arguments);
  };
}

var user = {
  firstName: "Вася",
  sayHi: function() {
    alert( this.firstName );
  }
};

setTimeout(bind(user.sayHi, user), 1000);

Суть кода в том, что бы пока этот таймер отсчитывал милисекунды, и в этот момент переменная изменилась, то все равно должна вывестить переменная, которая была в момент запуска, а не последнее значения до результата выполнения таймера.
После этого кода автор пишет
Теперь всё в порядке!

Но вот только ничего не в порядке.
Этот код прекрасно демонстрирует неисправность кода выше https://codepen.io/CitizenOne/pen/aVdGQy
Просто во время работы таймера тыкнете на красный квадрат, то есть так, что бы во время работы переменная изменилась. Хотя по идее всегда должно выводиться "Вася", а не "Вова" если мы тыкнем на красный квадрат

Источник - https://learn.javascript.ru/bind#решение-2-bind-дл...
  • Вопрос задан
  • 950 просмотров
Решения вопроса 1
Вы что-то путаете. Пока ты не кликнул на квадрат, выводится Вася, а если кликнул, то Вова, т. е. всё правильно.

Вероятно, Вам нужно учить JS. Что такое объекты, переменные, простые значения vs объекты и т. д. (а лучше вообще весь JS).

Хотя по идее всегда должно выводиться "Вася", а не "Вова"

Что за :) Учите JS.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы