Javascript dispatchEvent

Hey ... I use Flash a lot, and my classes use the EventDispatcher class, which allows me to define custom class events. How to do it in javascript.

I would like to do something like this:

var MyClass = function() { }; MyClass.prototype = { test : function() { dispatchEvent('ON_TEST'); } }; var mc = new MyClass(); mc.addEventListener('ON_TEST', handler); function handler() { alert('working...') } 

How is this possible with javascript?

+6
javascript javascript-events dispatcher
source share
1 answer

You have to give up yours. Here is just one way.

 var MyClass = function() { this._events = {}; }; MyClass.prototype = { addListener: function(eventName, callback) { var events = this._events, callbacks = events[eventName] = events[eventName] || []; callbacks.push(callback); }, raiseEvent: function(eventName, args) { var callbacks = this._events[eventName]; for (var i = 0, l = callbacks.length; i < l; i++) { callbacks[i].apply(null, args); } }, test : function() { this.raiseEvent('ON_TEST', [1,2,3]); // whatever args to pass to listeners } }; 

You should probably also add a โ€œremoveListenerโ€ that would have to find the callback in the array and remove it from the array (or perhaps remove all listeners for the whole event if no callback is specified).

+20
source share

All Articles