其他事件语法

除了使用侦听器对象外,您还可以将函数用作侦听器。如果侦听器不属于对象,它就是函数。例如,以下代码创建侦听器函数 myHandler 并将它注册到 buttonInstance

function myHandler(eventObj){
  if (eventObj.type == "click"){
    // your code here
  }
}
buttonInstance.addEventListener("click", myHandler);

注意:在函数侦听器中,this 关键字是指 buttonInstance,不是指定义函数的时间轴。

您也可以使用支持 handleEvent 方法的侦听器对象。不论事件的名称是什么,都会调用侦听器对象的 handleEvent 方法。您必须使用 if elseswitch 语句来处理多个事件,因此,该语法不够灵活。例如,以下代码使用 if else 语句处理 clickenter 事件:

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

有关详细信息,请参阅创建组件