Как передать экземпляр класса JavaScript в обработчик событий DOM? - PullRequest
5 голосов
/ 08 ноября 2010

У меня очень сложная ситуация. Я хотел бы передать экземпляр объекта слушателю событий элемента DOM, который был создан тем же экземпляром объекта (если это имеет смысл).

function Object(callback){
    this.callback = callback;
    this.node = document.createElement('div');
    this.send = function(){
        document.getElementById('list').appendChild(this.node);
    }
    this.node.addEventListener('click',function(){/*this.callback() of Object instance needs to go here*/},true);
}

Я знаю, что использование callback() будет работать внутри прослушивателя событий, но это не то, что мне нужно, потому что я буду использовать переменные из экземпляра, которые позже не передаются из конструкции.

Как мне это решить?

1 Ответ

3 голосов
/ 08 ноября 2010

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

var elem = this;
this.node.addEventListener('click',function(){ elem.callback(); },true);

или

this.node.addEventListener('click', this.callback, true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...