Javascript 如何访问变量;这";内部事件处理程序

Javascript 如何访问变量;这";内部事件处理程序,javascript,jquery,scope,this,Javascript,Jquery,Scope,This,标准方法是将它包装起来,并将该\u变量转换为闭包中使用的内容: $(document).ready(function() { var thing = { menu: $("#menu"), init: function() { var _this = this; this.doSomething(); this.menu.on("click", "div", this.handle

标准方法是将它包装起来,并将该
\u变量转换为闭包中使用的内容:

$(document).ready(function() {

    var thing = {
        menu: $("#menu"),

        init: function() {
            var _this = this;
            this.doSomething();
            this.menu.on("click", "div", this.handleClick);
        },

        doSomething: function() {
            console.log(this); // thing
        },

        handleClick: function() {
            console.log(this); // div that was clicked on
            // How to console.log(_this) i.e. thing ?
        }
    };
    thing.init();
});
现在,它已正确绑定到原始的
this

您可能希望添加一个参数来捕获单击的内容:

this.menu.on("click", "div", function() {
  _this.handleClick();
});
然后确保您的方法收到以下信息:

this.menu.on("click", "div", function(ev) {
  _this.handleClick(ev, this);
});

标准方法是将它包装起来,并将该
\u变量转换为闭包中使用的内容:

$(document).ready(function() {

    var thing = {
        menu: $("#menu"),

        init: function() {
            var _this = this;
            this.doSomething();
            this.menu.on("click", "div", this.handleClick);
        },

        doSomething: function() {
            console.log(this); // thing
        },

        handleClick: function() {
            console.log(this); // div that was clicked on
            // How to console.log(_this) i.e. thing ?
        }
    };
    thing.init();
});
现在,它已正确绑定到原始的
this

您可能希望添加一个参数来捕获单击的内容:

this.menu.on("click", "div", function() {
  _this.handleClick();
});
然后确保您的方法收到以下信息:

this.menu.on("click", "div", function(ev) {
  _this.handleClick(ev, this);
});

当然,在您的设置中,您可以或
\u this
或类似的内容来访问单击的div,您也可以使用-so no
this
。当然,在您的设置中,您可以或
\u this
或类似的内容来访问单击的div,你也可以使用-so no
this
。这似乎是我一整天看到的最干净的东西,而不会被
this
进一步混淆!是的,这是有效的,但这是一个草率的攻击,是非常糟糕的做法。您不需要重写所有的类代码,就可以使用“this”而不是“this”。@Cerin这是从2016年开始的。事情变了。这似乎是我一整天看到的最干净的东西,没有不必要的被
这件事进一步弄糊涂!是的,这是有效的,但这是一个草率的攻击,是非常糟糕的做法。您不需要重写所有的类代码,就可以使用“this”而不是“this”。@Cerin这是从2016年开始的。事情变了。