Javascript 将引用传递给事件侦听器;“自我”;;

Javascript 将引用传递给事件侦听器;“自我”;;,javascript,Javascript,我只是想知道是否可以将对“this”的引用保存为变量,然后在eventListener中使用它。如果没有,请告知在javascript中传递对不同上下文的引用的最佳实践 例如: someListener(){ let self = this; //referencing this class someObject.addEventListener("click"), function(){ //some magic applied he

我只是想知道是否可以将对“this”的引用保存为变量,然后在eventListener中使用它。如果没有,请告知在javascript中传递对不同上下文的引用的最佳实践

例如:

someListener(){
    let self = this; //referencing this class
    
    someObject.addEventListener("click"), function(){
       //some magic applied here
       self.someArray.push("something");
    }
}
在处理事件时,我想不出其他方法来引用不同的上下文(事件侦听器所属的类的上下文)


谢谢

这很好,而且非常地道的ES5(使用这个名字也很常见)

ES6告诉我们哪些人使用了词法
而不是自己的

someListener(){
    someObject.addEventListener("click"), () => {
       //some magic applied here
       this.someArray.push("something");
    }
}
在引入之前,这是javascript开发人员常用的方法,但现在您可以使用


使用arrow函数可以解决这个问题,因为arrow函数没有自己的
绑定。它们从封闭范围中获取其值,在你的例子中,这是
someListener
函数的局部范围。

如果你给事件监听器传递了一个箭头函数,那么就不需要
self
。但是这种方法也是可以接受的,并且在ES6之前的代码中被广泛使用……太棒了,谢谢你,我会有一篇关于这方面的文章。我希望我能在昨天的堆栈中找到这一点谢谢你,先生
someListener(){
    someObject.addEventListener("click"), () => {
       this.someArray.push("something");
    }
}