this в замыкании
дурацкий вопрос, наверное, но уже час блукаю в трех соснах :-E
пусть есть класс, в котором я хочу обрабатывать события, ну например клика по кнопке: class MyClass { constructor() { $("#ButtonID").click(this.doOnClick); } doOnClcik() { this.doSomething(); } doSomething() { console.log(this); } } проблема в том, что при вызове doOnClick из замыкания this указывает отнюдь не на мой обьект, а на контекст замыкания, что, в общем-то правильно. Но как, черт возьми, получить внутри doOnClick ссылку на свой обьект?! Можно, конечно, через глобальные переменные, но что делать если таких обьектов несколько??? нутром чую что есть что-то более элегантное... |
yajohn,
$("#ButtonID").click(this.doOnClick.bind(this)); |
гхм.. почитал про bind, интересно
однако контекст замыкания мне по ходу тоже нужен. |
A, кажется понял:
constructor() { self = this; $("#ButtonID").click(function(){self.doOnClick(thi s)}); } doOnClcik(sender) { //sender == контекст события this.doSomething(); } doSomething() { console.log(this); } } вроде бы работает. Или есть какой-то более "правильный" путь? |
yajohn,
:cray: |
Цитата:
|
yajohn,
чем bind не устроил? да и вообще, вы используете Class из нового JS, но зачем self тогда и function? Стрелочная функция как раз и нужна, чтобы этих костылей не было. |
yajohn,
http://jsfiddle.net/jmdenf0o/ У тебя ещё опечатки в коде. Метод в классе называется doOnClcik, а вызываешь ты как doOnClick |
Часовой пояс GMT +3, время: 17:01. |