"Искусственные" события.
Что-то найти никак не могу как реализовать вот это:
myObj.onMyEvent = что-то делать //если где-то что-то произошло, то: MyEvent.fire(); Смысл в том, что мы вызываем (генерируем) какое-то своё событие (MyEvent) при этом есть объект "myObj" котрый умеет узнавать что произошло событие "MyEvent" и как-то по-своему реагирует на него, помимо этого может быть ещё много всяких объектов, котрые каждый по-своему реагируют на "MyEvent". Я знаю, есть "observer pattern" но там я что-то не найду ответ. Господа, ткните носом, пожалуйста, где читать. Или такое в природе вообще не возможно или не так делается, а вовсе по-другому. |
Решение:
var customEvents = { _handlers : {}, subscribe: function(event, handler){ if(typeof(this._handlers[event])=="undefined") this._handlers[event]=[]; this._handlers[event].push(handler); }, fire:function(event, data){ if(this._handlers[event]){ for(var i = 0; i < this._handlers[event].length; i++){ this._handlers[event][i](data); } } } }; var myObj1 = new function(){ this.handler = function(data){ console.log(data+'1'); }; customEvents.subscribe("greatEvent", this.handler); }; var myObj2 = new function(){ this.handler = function(data){ console.log(data+'2'); }; customEvents.subscribe("greatEvent", this.handler); }; //что-то где-то произошло customEvents.fire("greatEvent", 'ta-da'); всем спасибо, все свободны |
Часовой пояс GMT +3, время: 10:11. |