【发布时间】:2023-04-03 07:26:01
【问题描述】:
我有一个按钮,当按下它时,它应该调用一个调用另一个函数的函数。这是在一个类中。
class cat{
constructor(){
this.event_listener();
}
log_2(){
console.log("cat 2");
}
log_1(){
console.log("cat 1");
this.log_2();
}
event_listener(){
document.getElementById("cat_button").addEventListener("click", this.log_1);
}
}
let cat1 = new cat();
第一个函数this.log_1()在按下按钮时调用,并按预期输出“cat 1”,但随后报错
this.log_2 is not a function
出现在控制台上,尽管 log_2() 是在类中定义的。如何构造它以便将 log_2() 识别为函数?
【问题讨论】:
-
您还没有将
log2()设为类的属性(类方法)。你刚刚使它成为一个独立的函数。 -
试试
.addEventListener("click", this.log_1.bind(this))或.addEventListener("click", event => this.log_1()) -
你需要绑定
-
现代浏览器支持这种方法语法,无需绑定:jsfiddle.net/n2dtysuc
标签: javascript class oop