Javascript 在JS类中调用方法返回“…不是函数”
我有一个JS类,它的方法如下:Javascript 在JS类中调用方法返回“…不是函数”,javascript,addeventlistener,keydown,Javascript,Addeventlistener,Keydown,我有一个JS类,它的方法如下: setupComponent() { document.getElementById("message-input").addEventListener("keydown", this._onKeyPress); document.getElementById("send-button").addEventListener("click", this._onSend); } 在它下面,有两种方法: _onKeyPress(event)
setupComponent() {
document.getElementById("message-input").addEventListener("keydown", this._onKeyPress);
document.getElementById("send-button").addEventListener("click", this._onSend);
}
在它下面,有两种方法:
_onKeyPress(event) {
if (event.code === "Enter") {
this._onSend();
}
}
_onSend() {
console.log("send");
}
我的问题是:为什么来自click eventListener的直接调用有效?它记录消息,而在_onKeyPress中调用的这个。_onSend方法返回这个。_onSend不是一个函数
也可以使用此选项。在setupComponent中运行
这是与eventListeners相关联的一种魔力吗?当函数用作事件处理程序时,它的this设置为从中激发事件的元素。因此,您不能期望您的方法存在,但可以使用function.prototype.bind将此绑定到您的函数
神奇的是,这并不总是意味着你认为它意味着什么。我认为这可能是一个问题,但为什么它在这里工作:它看起来非常相似。编辑:另请点击此处:
document.getElementById("message-input")
.addEventListener("keydown", this._onKeyPress.bind(this));