从js类中分配事件侦听器

时间:2013-07-22 17:51:31

标签: javascript oop

我想将onclick事件监听器分配给一个类中的对象 然后从创建该onclick的实例中获取一些变量

function myclass() {

    this.myvar;

    this.myfunc = function() 
    {
        alert(this.myvar);
        document.onmousedown = this.mouseDown;        
    }

    this.mouseDown = function(e) 
    {
        alert(this.myvar); //does not work of course
        //how could I access myvar from current myclass instance
    }

}


var myclass_instance = new myclass();
    myclass_instance.myvar = 'value'
    myclass_instance.myfunc();

http://jsfiddle.net/E7wK4/

2 个答案:

答案 0 :(得分:1)

this事件中的

mouseDown不是该实例的this

请尝试

function myclass() {

    var _this = this;

    this.myvar;

    this.myfunc = function() 
    {
        alert(this.myvar);
        document.onmousedown = this.mouseDown;        
    }

    this.mouseDown = function(e) 
    {
        alert(_this.myvar); //<<<<
    }

}

演示:http://jsfiddle.net/maniator/E7wK4/1/

答案 1 :(得分:1)

作为@Neal的替代品,你可以绑定它。

document.onmousedown = this.mouseDown.bind(this);