(function () { var _eventsStack = {}; window.Events = { emit: function (eventName, message) { if (!_eventsStack.hasOwnProperty(eventName)) { _eventsStack[eventName] = []; } _eventsStack[eventName].forEach(function (fn) { fn(message != undefined ? message : {}); }); }, on: function (eventName, fn) { if (!_eventsStack.hasOwnProperty(eventName)) { _eventsStack[eventName] = []; } _eventsStack[eventName].push(fn); }, off: function (eventName, fn) { console.log(_eventsStack) _eventsStack[eventName].splice(_eventsStack[eventName].indexOf(fn) - 1, 1); } }; })();