Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.11.2017, 19:04
Аспирант
Отправить личное сообщение для fedushok Посмотреть профиль Найти все сообщения от fedushok
 
Регистрация: 18.09.2017
Сообщений: 45

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

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

примерчик здесь
Ответить с цитированием
  #2 (permalink)  
Старый 28.11.2017, 19:19
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,007

https://jsfiddle.net/q5nnnu2L/

у тебя bind создавал каждый раз новую функцию, потому ты уже не мог удалить добавленную
Ответить с цитированием
  #3 (permalink)  
Старый 28.11.2017, 19:38
Аспирант
Отправить личное сообщение для fedushok Посмотреть профиль Найти все сообщения от fedushok
 
Регистрация: 18.09.2017
Сообщений: 45

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

1. Как браузер в строчке
this.onClick = this.onClick.bind(this);
понимает, что
this.onClick
справа и слева это разные вещи?
2. В действительности объект присваивает в качестве обработчика не свой метод, а метод своего хозяина (другого объекта). Это как я понимаю разницы не составит?
Ответить с цитированием
  #4 (permalink)  
Старый 28.11.2017, 20:07
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,007

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

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

После этого this.onClick всегда будет браться из экземпляра (не из прототипа), ибо так устроен этот грёбаный мир.
Ответить с цитированием
  #5 (permalink)  
Старый 29.11.2017, 14:52
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,513

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как я могу заблокировать события flexslider, в момент ввода текста в textarea Pavel_G Элементы интерфейса 9 22.09.2015 09:08
не работает обработчик события mbp64 Общие вопросы Javascript 5 03.10.2012 17:55
Как удалить обработчик из себя и можно ли? Evgen1917 Events/DOM/Window 2 23.12.2010 18:21
обработчик события focus для окна Сергей Д Internet Explorer 4 22.09.2010 17:33
Не могу написать норм прогу (события)!!! ego Общие вопросы Javascript 2 16.12.2009 23:01