Показать сообщение отдельно
  #1 (permalink)  
Старый 09.07.2014, 16:58
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Почему не стоит пользовать addEventListener
Я впрошлом треде пытался выяснить есть ли преимущества сабжа перед 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)
и тут, если кому-то неочевидно, у нас огромный профит в расширяемости, ибо libEvents легко можно наследовать. Конечно, мы можем сделать во так
Код:
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'ы и совать все в объект.

Если Вы приведете пример, где мы можем сделать это так же легко с addEventListener, я заберу свои слова обратно.

А пока: Considered harmful

Последний раз редактировалось foo, 09.07.2014 в 17:17.
Ответить с цитированием