JavaScript events for custom objects
$ npm install gr-event-dispatcher
- eventDispatcher
- ~addEventListener(type, listener) ⇒
Object
- ~hasEventListener(type, listener) ⇒
Boolean
- ~removeEventListener(type, listener) ⇒
Object
- ~dispatchEvent(event) ⇒
Object
- ~apply(object) ⇒
Object
- ~addEventListener(type, listener) ⇒
Registers the specified listener
on the event target it's called on.
Kind: inner method of eventDispatcher
Returns: Object
- The eventDispatcher
object.
Throws:
TypeError
If the object thateventDispatcher
is applied to is not extensible.
Param | Type | Description |
---|---|---|
type | String |
A string representing the event type to listen for. |
listener | function |
A function to be executed when an event of the specified type occurs. |
Checks if the target object has a listener
registered on for specific event type
.
Kind: inner method of eventDispatcher
Returns: Boolean
- True if target object has listener
registered for specific event type
; otherwise false.
Param | Type | Description |
---|---|---|
type | String |
A string representing the event type. |
listener | function |
The event listener to check if registered for the specified event type . |
Removes the previously registered event listener
from the event target.
Kind: inner method of eventDispatcher
Returns: Object
- The eventDispatcher
object.
Param | Type | Description |
---|---|---|
type | String |
A string representing the event type to remove. |
listener | function |
The event listener function to remove from the event target. |
Dispatches an event at the specified event target.
Kind: inner method of eventDispatcher
Returns: Object
- The eventDispatcher
object.
Param | Type | Description |
---|---|---|
event | Object |
The event object to be dispatched. |
Applies the eventDispatcher
prototype methods to the event target.
Kind: inner method of eventDispatcher
Returns: Object
- The eventDispatcher
object.
Throws:
TypeError
If the object thateventDispatcher
is applied to is not extensible.
Param | Type | Description |
---|---|---|
object | Object |
The event target object. |
var car = {
start: function (afterStartCallback) {
// Dispatch `start` event.
this.dispatchEvent({type: 'start', message: 'Start engines'});
afterStartCallback && afterStartCallback(this);
},
stop: function () {
// Dispatch `stop` event.
this.dispatchEvent({type: 'stop', message: 'Stop engines'});
}
};
function startEngines(event) {
console.log(event.message);
}
function stopEngines(event) {
console.log(event.message);
}
// Apply `eventDispatcher` methods to the prototype of the event target.
eventDispatcher.apply(Object.getPrototypeOf(car));
// Register event listeners to event target.
car
.addEventListener('start', startEngines)
.addEventListener('afterStart', startEngines)
.addEventListener('stop', stopEngines);
// `start` event fires first, then `afterStart` and finally
// after two seconds `stop` events fires.
car.start(function (self) {
// Dispatch `afterStart` event.
self.dispatchEvent({type: 'afterStart', message: 'Car has started'});
});
console.log(car.hasEventListener('start', startEngines)); // -> true
console.log(car.hasEventListener('afterStart', startEngines)); // -> true
console.log(car.hasEventListener('stop', startEngines)); // -> false
console.log(car.hasEventListener('stop', stopEngines)); // -> true
setTimeout(function () {
car.stop();
// Remove all event listeners from event target.
car
.removeEventListener('start', startEngines)
.removeEventListener('afterStart', startEngines)
.removeEventListener('stop', stopEngines);
}, 2000);