Сообщение от 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!