Я впрошлом треде пытался выяснить есть ли преимущества сабжа перед on-свойствами объектов. И, на данный момент, я склоняюсь к тому, что никаких преимуществ нет. А вот недостатки есть — расширяемость. Я набросал вот такую вот реализацию
libEvents={
__proto__: null,
divClick1: function(){console.log(1)},
divClick2: function(){console.log(2)},
all: function(){
for(var i in libEvents){
if(i!=="all"){ libEvents[i]()}
}
}
}
div=document.createElement("div")
div.innerHTML="foo"
div.onclick=libEvents.all
document.body.appendChild(div)
libEvents.divClick3=function(){console.log(3)}
div2=document.createElement("div")
div2.innerHTML="bar"
div2.onclick=libEvents.all
document.body.appendChild(div2)
div=document.createElement("div")
div.innerHTML="foo"
div.addEventListener("click", libEvents.all)
document.body.appendChild(div)
libEvents.divClick3=function(){console.log(3)}
div2=document.createElement("div")
div2.innerHTML="bar"
div2.addEventListener("click", libEvents.all)
document.body.appendChild(div2)
Если Вы приведете пример, где мы можем сделать это так же легко с addEventListener, я заберу свои слова обратно.
А пока: Considered harmful