javascript - 如何引用在同一类中创建的事件侦听器中的类?
问题描述
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
部分。
我该怎么做?
解决方案
您需要传入this
您的类对象:
window.addEventListener("click", this.logWord.bind(this))
或者您可以使用箭头功能:
window.addEventListener("click", () => this.logWord())
推荐阅读
- swift - UIActivityViewController iOS12.2:奇怪的活动类型标题
- scala - 在 Scala 中处理和抛出异常
- java - 我们如何测试 JPA/Hibernate 中的 N+1 问题?
- c# - 在格式化模板中将 csv 转换为 xls 时,为什么第一张工作表没有格式化?
- gradle - 如何通过配置使一个子项目依赖于 gradle 中的另一个子项目?
- deep-learning - 如何使用深度学习执行多项式地标检测
- java - Android - System.exit(0) 并重新启动活动和服务
- c# - 如果 Socket.BeginReceive 之后没有响应,如何处理 AsyncCallback 以进行接收
- c++ - 如何正确地将规则 5(或零?)应用于包含带有字符串的自定义对象向量的类
- php - 三张表之间的laravel关系