0

我正在寻找一种从其组件之一的事件侦听器中访问对象实例的方法。

function FormField() {

    this.variable = "initial";

    this.container = new Container();
    this.container.addEventListener("mousedown", function(evt) {

         // this.variable = "modified";
    });
}

即容器上的鼠标按下将能够识别容器属于哪个类的实例并在其方法中使用该实例。

4

3 回答 3

0

最简单的方法是创建一个直接引用实例的新变量,如下所示:

this.container = new Container();
var self = this;
this.container.addEventListener("mousedown", function(evt) {
     console.log(self);
});
于 2013-06-17T19:25:28.787 回答
0

您应该将此上下文存储到本地 var self 中:

    function FormField() {
    var self = this;
    self.variable = "initial";

    this.container = new Container();
    this.container.addEventListener("mousedown", function(evt) {

         // self.variable = "modified";
    });
}
于 2013-06-17T19:25:39.263 回答
0

您可以分配this给其他一些变量,然后在事件处理程序中访问它,即

function FormField() {
    var self = this;

    self.variable = "initial";

    self.container = new Container();
    self.container.addEventListener("mousedown", function(evt) {
         // use self.variable = "modified";
    });
}
于 2013-06-17T19:25:41.563 回答