如何将JavaScript类实例传递给DOM事件侦听器?

时间:2010-11-08 04:07:30

标签: javascript dom object

我有一个看似非常棘手的情况。我想将一个对象的实例传递给由同一个对象实例创建的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 个答案:

答案 0 :(得分:3)

匿名函数改变了 this 的含义。为了能够在处理程序中使用它,使用另一个var,或者不创建另一个函数:

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

this.node.addEventListener('click', this.callback, true);