混乱,这个指针和javascript中的事件

时间:2013-04-18 21:53:18

标签: javascript

我有一个javascript对象,我希望能够处理一些交互功能。以简单的方式描述场景有点棘手,所以希望它不会在这里失控。

我的对象看起来像

myobject = function() {
    this.initialize = function() {
        // HERE this = the myobject instance
        var test = document.createElement('div');
        test.onmousedown = this.mousedown;
    }
    this.mousedown = function(e) {
        // HERE this = the calling div-element
    }
}

所以我的问题基本上是this在调用myobject时不会是this.mousedown(e)实例,在这种情况下它更像是调用者(如果术语正确吗?)它是我创建的div并放入一个名为test的变量。

我想访问正在运行该方法的实例(因为我相信这是我创建的mousedown方法。)

到目前为止,我已经尝试了一些想法:

  • 在包含data-对象的div上创建this属性并对其进行操作。
  • 将此指针作为参数与e一起发送到this.mousedown(e)

现在我能想到的就是希望它有所作为。

2 个答案:

答案 0 :(得分:4)

首次实例化对象时可以创建副本:

var myobject = function() {
    var self = this;    
    this.initialize() {
        // HERE this = the myobject instance
        var test = document.createElement('div');
        test.onmousedown = this.mousedown;
    }
    this.mousedown(e) {
        // HERE this = the calling div-element
        // use self instead of this
    }
}

答案 1 :(得分:0)

最简单的解决方案是创建一个你在回调中引用的'self'var:

myobject = funciton() {
    var self = this;
    this.initialize() {
        //use self to refer to myobject
        self.mousedown(e);
    }
    this.mousedown(e) {

    }
}