为什么我无法在run函数中返回element_id?如果我将脚本设置为let self = this; function(){ self.run() }
不起作用:
class clickin {
constructor(element_id) {
this.element = document.getElementById(element_id);
this.element.addEventListener('click', this.run);
}
run() {
alert('Element id: ' + element_id);
}
}
作品:
class clickin {
constructor(element_id) {
this.element = document.getElementById(element_id);
let self = this;
this.element.addEventListener('click', function(){
self.run();
});
}
run() {
alert('Element id: ' + element_id);
}
}
使用addEventListener对象,您可以设置一个回调函数,在触发事件时将调用该函数。因此,它在与构造函数不同的上下文中运行。在这种情况下,“ caller(this)”对象将发生更改,因此,您上面提到的this.run将不起作用。但是,当您将“ clickin”类对象分配给变量“ self”时,您可以运行,因为self在回调函数中作为闭包可用,并且在执行事件处理程序时,它可以访问该“ clickin”对象。您可能需要更深入地研究以下主题,以便更好地理解。
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/this
https://developer.mozilla.org/zh-CN/docs/Web/API/EventTarget/addEventListener
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句