【发布时间】:2021-08-19 20:46:50
【问题描述】:
我有一个这样的简单输入处理类:
class Key
{
static enter(event, handler)
{
if (event.keyCode === 13) {
$handler();
}
}
}
它被称为<div onkeydown="Key.enter(event, customFunction)"></div>
我希望能够在 Key.enter() 中获取事件,而不必总是将其传递给函数。我知道在普通函数中this.event 会起作用,但这不起作用,可能是因为我在一个类中。
任何想法如何仍然获取调用该函数的事件以便我可以像Key.enter(customFunction) 一样调用它?
更新:将函数设为静态,它已经在我的代码中,但忘记写在问题中。
【问题讨论】:
-
如果要在没有实例的情况下调用它,则需要将其设为静态方法。
-
你真的不应该在这里使用
class。 -
普通函数中没有
this.event这样的东西。 -
在普通函数中,
this是全局对象,所以this.event是event全局变量。这不是标准的全局变量,但它适用于某些浏览器(但不适用于 Firefox)。 -
停止在 html 中使用内联属性事件处理程序 - 请参阅 onclick="" vs event handler。编写一个可以用作
element.onclick = onlyEnterKey(customFunction);的辅助函数很容易
标签: javascript class event-handling dom-events