Показать сообщение отдельно
  #3 (permalink)  
Старый 24.03.2015, 10:38
Аспирант
Посмотреть профиль Найти все сообщения от newuser1001
 
Регистрация: 24.03.2015
Сообщений: 92

Сообщение от n199a
ЧТО ПРОИСХОДИТ ТУТ?
Думаю, под капотом происходит что-то вроде:
print=console.log.bind(console)

Event={
 create: function(name){
  var o=Object.create(this)
  o.elements=[]
  o.name=name
  window[name]=o
 },
 add: function(el){this.elements.push(el)},
 activate: function(){this.action(); this.notify()},
 notify: function(){var name=this.name; this.elements.forEach(function(el){el["on"+name]()})}
}

Event.create("printWorld")
printWorld.action=function(){print("World, ")}

SomeElement={
 create: function(){return Object.create(this)},
 addEventListener: function(event, fnc){window[event].add(this); this["on"+event]=fnc}
}


helloElement=SomeElement.create()
helloElement.addEventListener("printWorld", function(){print("Hello!")})

goodbyeElement=SomeElement.create()
goodbyeElement.addEventListener("printWorld", function(){print("Bye!")})


printWorld.activate()

//  World, 
//  Hello!
//  Bye!
Ответить с цитированием