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