0

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

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/

nup
  • 1,833

1 Answers1

2

Luke, use the Function#bind!

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

jQuery('span').on('click', a.click.bind(a));