首页 > 解决方案 > 如何引用在同一类中创建的事件侦听器中的类?

问题描述

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");

我什至不知道如何问这个问题,但这是我的问题......

console.log(this.word)

这会将“未定义”记录到控制台,因为this是指window而不是 TestClass。我想this.word参考“香蕉”,我希望能够同时使用该e.charCode部分。

我该怎么做?

标签: javascriptdom

解决方案


您需要传入this您的类对象:

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

或者您可以使用箭头功能:

window.addEventListener("click", () => this.logWord())

推荐阅读