除了使用侦听器对象外,您还可以将函数用作侦听器。如果侦听器不属于对象,它就是函数。例如,以下代码创建侦听器函数 myHandler
并将它注册到 buttonInstance
:
function myHandler(eventObj){ if (eventObj.type == "click"){ // your code here } } buttonInstance.addEventListener("click", myHandler);
注意:在函数侦听器中,this
关键字是指 buttonInstance
,不是指定义函数的时间轴。
您也可以使用支持 handleEvent
方法的侦听器对象。不论事件的名称是什么,都会调用侦听器对象的 handleEvent
方法。您必须使用 if else
或 switch
语句来处理多个事件,因此,该语法不够灵活。例如,以下代码使用 if else
语句处理 click
和 enter
事件:
myObj.handleEvent = function(o){ if (o.type == "click"){ // your code here } else if (o.type == "enter"){ // your code here } } target.addEventListener("click", myObj); target2.addEventListener("enter", myObj);
另外还有一种事件语法样式,只有在创作组件并且知道某个特定对象是事件的唯一侦听器时,才可使用该事件语法样式。在这种情况下,您可以利用 V2 事件模型的一个特点,那就是它始终在事件名称加“Handler”的组件实例上调用方法。例如,如果要处理 click
事件,应编写以下代码:
componentInstance.clickHandler = function(o){ // insert your code here }
在上面的代码中,如果在回调函数中使用关键字 this
,则该关键字的作用范围是 componentInstance
。
有关详细信息,请参阅创建组件。