Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从javascript中某个类组件的事件侦听器访问类的实例_Javascript_Events_Listener_Event Listener - Fatal编程技术网

从javascript中某个类组件的事件侦听器访问类的实例

从javascript中某个类组件的事件侦听器访问类的实例,javascript,events,listener,event-listener,Javascript,Events,Listener,Event Listener,我正在寻找一种方法,从其组件之一的事件侦听器中访问对象的实例 function FormField() { this.variable = "initial"; this.container = new Container(); this.container.addEventListener("mousedown", function(evt) { // this.variable = "modified"; }); } 即,容器上的鼠标

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

function FormField() {

    this.variable = "initial";

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

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

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

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

this.container = new Container();
var self = this;
this.container.addEventListener("mousedown", function(evt) {
     console.log(self);
});

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

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

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

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

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

function FormField() {
    var self = this;

    self.variable = "initial";

    self.container = new Container();
    self.container.addEventListener("mousedown", function(evt) {
         // use self.variable = "modified";
    });
}
可能重复的