Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Почему не стоит пользовать addEventListener (https://javascript.ru/forum/events/48593-pochemu-ne-stoit-polzovat-addeventlistener.html)

foo 09.07.2014 16:58

Почему не стоит пользовать 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

Erolast 09.07.2014 19:18

Оппа. addEventListener внезапно уступает прямой установке в расширяемости. Что дальше выдашь? Использовать eval для оптимизации? Ах, уже было же... Тогда... кхм... может, отказ от регулярок как от непонятного и неочевидного средства в пользу циклов?

foo 09.07.2014 19:20

Erolast,
Ты читай внимательней. Наследование у тебя отлетает. И в моем варианте есть прямая установка, смотри внимательней.

foo 09.07.2014 19:30

Цитата:

Сообщение от Erolast
отказ от регулярок

Че ты несешь? Там про рекурсию речь шла.

Erolast 09.07.2014 19:30

Покажи пример употребления сего замечательного фреймфорка на практике.
Цитата:

Че ты несешь? Там про рекурсию речь шла.
Где там? Я предположил еще не имевшую место ситуацию, если ты не заметил.

foo 09.07.2014 19:33

Цитата:

Сообщение от Erolast
Покажи пример употребления сего замечательного фреймфорка на практике.

когда тебе надо для нескольких элементов отнаследовать от одного, не придется писать для каждого el.addEventListener("click", function(){})

foo 09.07.2014 19:34

Erolast,
И менять ты можешь сразу пачку

Erolast 09.07.2014 19:36

Я прекрасно понял, что ты им собираешься делать. Покажи лучше пример употребления на практике.

foo 09.07.2014 19:39

Erolast,
Зачем тебе пример, если ты понял? Я че кучу кода должен писать ради твоего любопытства? В топике -- это уже реальный пример. Дальше все зависит от фантазии. Твои странные заявленя эквивалентны тому, что наследование не нужно, гибкость не нужна.

Erolast 09.07.2014 19:45

На практике этот трюк очень, очень редко бывает нужен, а в тех случаях, где таки нужен, ничто не мешает использовать addEventListener. Он не хуже.


Часовой пояс GMT +3, время: 17:42.