Javascript 如何引用在同一类中创建的事件侦听器中的类?

Javascript 如何引用在同一类中创建的事件侦听器中的类?,javascript,dom,Javascript,Dom,我甚至不知道怎么问这个问题,但这是我的问题 class TestClass { constructor(word) { this.word = word; window.addEventListener("keypress", this.logCharCodeAndWord); window.addEventListener("click", this.logWord) } logCharCodeAndWord(e) {

我甚至不知道怎么问这个问题,但这是我的问题

class TestClass {
    constructor(word) {
        this.word = word;
        window.addEventListener("keypress", this.logCharCodeAndWord);
        window.addEventListener("click", this.logWord)
    }
    logCharCodeAndWord(e) {
        console.log(e.charCode);
        console.log(this.word)
    }
    logWord() {
        console.log(this.word)
    }
}

var testObject = new TestClass("banana");
这会将“undefined”记录到控制台,因为
引用的是
窗口
,而不是TestClass。我希望
this.word
指的是“香蕉”,我希望能够同时使用
e.charCode
部分


我该怎么做呢?

只需将此
传递给事件侦听器即可

console.log(this.word)
class测试类{
构造器(word){
这个单词=单词;
addEventListener(“keypress”,e=>this.logCharCodeAndWord(e,this));
window.addEventListener(“单击“,()=>this.logWord(this));
}
logCharCodeAndWord(e,self){
console.log(例如charCode);
console.log(self.word)
}
日志字(self){
console.log(self.word)
}
}

var testObject=newtestclass(“香蕉”)只需将此
传递给事件侦听器即可

console.log(this.word)
class测试类{
构造器(word){
这个单词=单词;
addEventListener(“keypress”,e=>this.logCharCodeAndWord(e,this));
window.addEventListener(“单击“,()=>this.logWord(this));
}
logCharCodeAndWord(e,self){
console.log(例如charCode);
console.log(self.word)
}
日志字(self){
console.log(self.word)
}
}

var testObject=newtestclass(“香蕉”)
您需要传入类对象的

window.addEventListener("keypress", e => this.logCharCodeAndWord(e, this));
window.addEventListener("click", () => this.logWord(this));
也可以使用箭头功能:

window.addEventListener("click", this.logWord.bind(this))

您需要传入类对象的
this

window.addEventListener("keypress", e => this.logCharCodeAndWord(e, this));
window.addEventListener("click", () => this.logWord(this));
也可以使用箭头功能:

window.addEventListener("click", this.logWord.bind(this))

如果使用箭头函数,则无需通过此项。这是最常见的重复问题之一。进一步的回答是没有用的。(正如Christian指出的,上面有点混乱,应用了两个单独的修复程序。)感谢@Christian指出,如果使用箭头函数,则无需通过此测试。这是最常见的重复问题之一。进一步的回答是没有用的。(正如Christian所指出的,上面的问题有点混乱,应用了两个不同的修复方法。)感谢@Christian指出这是最常见的重复问题之一。进一步的回答没有用。这是最常见的重复问题之一。更多的答案没有用。谢谢你的链接。我尝试自己搜索,但在任何地方都找不到任何相关链接。毕竟,我不知道要搜索的技术术语。谢谢你的链接。我尝试自己搜索,但在任何地方都找不到任何相关链接。毕竟,我不知道要搜索的技术术语。