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:
TypeErrorIf the object thateventDispatcheris 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:
TypeErrorIf the object thateventDispatcheris 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);