Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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.
Ответить с цитированием
  #2 (permalink)  
Старый 09.07.2014, 19:18
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Оппа. addEventListener внезапно уступает прямой установке в расширяемости. Что дальше выдашь? Использовать eval для оптимизации? Ах, уже было же... Тогда... кхм... может, отказ от регулярок как от непонятного и неочевидного средства в пользу циклов?
Ответить с цитированием
  #3 (permalink)  
Старый 09.07.2014, 19:20
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Erolast,
Ты читай внимательней. Наследование у тебя отлетает. И в моем варианте есть прямая установка, смотри внимательней.
Ответить с цитированием
  #4 (permalink)  
Старый 09.07.2014, 19:30
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Сообщение от Erolast
отказ от регулярок
Че ты несешь? Там про рекурсию речь шла.
Ответить с цитированием
  #5 (permalink)  
Старый 09.07.2014, 19:30
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Покажи пример употребления сего замечательного фреймфорка на практике.
Цитата:
Че ты несешь? Там про рекурсию речь шла.
Где там? Я предположил еще не имевшую место ситуацию, если ты не заметил.
Ответить с цитированием
  #6 (permalink)  
Старый 09.07.2014, 19:33
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Сообщение от Erolast
Покажи пример употребления сего замечательного фреймфорка на практике.
когда тебе надо для нескольких элементов отнаследовать от одного, не придется писать для каждого el.addEventListener("click", function(){})
Ответить с цитированием
  #7 (permalink)  
Старый 09.07.2014, 19:34
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Erolast,
И менять ты можешь сразу пачку
Ответить с цитированием
  #8 (permalink)  
Старый 09.07.2014, 19:36
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Я прекрасно понял, что ты им собираешься делать. Покажи лучше пример употребления на практике.
Ответить с цитированием
  #9 (permalink)  
Старый 09.07.2014, 19:39
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Erolast,
Зачем тебе пример, если ты понял? Я че кучу кода должен писать ради твоего любопытства? В топике -- это уже реальный пример. Дальше все зависит от фантазии. Твои странные заявленя эквивалентны тому, что наследование не нужно, гибкость не нужна.
Ответить с цитированием
  #10 (permalink)  
Старый 09.07.2014, 19:45
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему так происходит? noname1990 Общие вопросы Javascript 2 23.11.2012 00:16
Почему некоторые операторы возвращают значения, а не ссылки? dump Общие вопросы Javascript 15 25.07.2012 17:28
Регулярные выражения. Почему находи именно так? jsuse Общие вопросы Javascript 4 21.11.2011 16:37
Свойства объекта, методы и this. Почему свойство вызывается с () ? jsuse Общие вопросы Javascript 2 04.11.2011 20:39
JavaScript на Яндекс.Фотки - почему тормозит браузеры? ZavFirefox Javascript под браузер 23 27.09.2009 19:24