[js]理解events

javascript中的事件分为两级:DOM level 0 与 DOM level 2。DOM level 0应该算是戏称,因为它不属于DOM标准,与DOM level 2完全不同。

在DOM level中把事件写到标签里面,例如:

<input type="button" value="Press Me" onclick="alert('thanks');">  

其实这样做相当于在js中这样写:

xx.onclick=function(){alert('thanks');}

因为如果typeof input的onclick属性,结果不是String,而是function。 

的确,我们更常用第二种方式定义事件。 

使用DOM level0的最大好处是简单。

对于DOM level 2,则要先注册event handler,用addEventListener()函数,这一过程与level 0不同, level 0中把event handler赋值给event target的一个属性,而level 2不是。在level 2中每个target可以注册多个handler,而level 0中不行。但是,所有的实现依然把event handler function作为event target的一个方法来实现,这意味着我们依然可以用this指向事件触发元素。但是,标准里面没有规定必须这么做。标准的做法是用event.currentTarget来指向绑定事件的元素。对于每一个event handler函数,会自动传一个event参数来描述本次事件的信息。 

原文地址:https://www.cnblogs.com/orchid/p/2437687.html