Проблема с вызовом метода объекта [дубликат]

269
13 марта 2017, 11:00

На данный вопрос уже ответили:

  • Потеря контекста вызова 3 ответа

Пытаюсь вызвать метод объекта из другого его метода. Все хорошо кроме такой ситуации:

a = {
  fun: function() {
    alert('!');
  },
  click: function() {
    this.fun();
  },
}
jQuery('span').on('click', a.click);

Если метод отвечает на событие элемента, то this внутри него будет указателем на элемент, вызвавший событие, а не на сам объект. При попытке исполнить код выдается ошибка: this.fun is not a function. Как решить проблему?

https://jsfiddle.net/2vv2rd0x/1/

Answer 1

Luke, use the Function#bind!

a = {
  fun: function() {
    alert('!');
  },
  click: function() {
    this.fun();
  },
}
jQuery('span').on('click', a.click.bind(a));
READ ALSO
Итераторы, генераторы

Итераторы, генераторы

Зачем на практике нужны итераторы? Вообще, интересует в общем-то php и js, но они же есть во многих языкахНапример зачем мне библиотека SPL и её интерфейсы...

310
Вывести URL для текущей вкладки

Вывести URL для текущей вкладки

Добрый ДеньДля тестового примера хочу попробовать вывести URL для текущей вкладки

352