Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Не могу удалить обработчик события (https://javascript.ru/forum/events/71561-ne-mogu-udalit-obrabotchik-sobytiya.html)

fedushok 28.11.2017 19:04

Не могу удалить обработчик события
 
Приветствую!

Назначаю, например, кнопке обработчик события. Обработчиком события является метод класса. Используюя функцию bind этот вопрос решается. А удалить этот обработчик я уже не могу.

примерчик здесь

Alexandroppolus 28.11.2017 19:19

https://jsfiddle.net/q5nnnu2L/

у тебя bind создавал каждый раз новую функцию, потому ты уже не мог удалить добавленную

fedushok 28.11.2017 19:38

Благодарю! Всё работает, но легче не стало.

1. Как браузер в строчке
this.onClick = this.onClick.bind(this);
понимает, что
this.onClick
справа и слева это разные вещи?
2. В действительности объект присваивает в качестве обработчика не свой метод, а метод своего хозяина (другого объекта). Это как я понимаю разницы не составит?

Alexandroppolus 28.11.2017 20:07

fedushok,
this.onClick = this.onClick.bind(this);

смысл этой строчки: в конструкторе экземпляра берется из прототипа метод onClick, сотворяется из него забинженная функция, и записывается в поле onClick экземпляра.

После этого this.onClick всегда будет браться из экземпляра (не из прототипа), ибо так устроен этот грёбаный мир.

Aetae 29.11.2017 14:52

В современном js(ie9+) не надо париться с биндами для событий, просто используй объект с hanleEvent, для того он и придуман:
https://jsfiddle.net/q5nnnu2L/1/


Часовой пояс GMT +3, время: 23:16.