1.1.1 • Published 7 years ago

gr-event-dispatcher v1.1.1

Weekly downloads
31
License
MIT
Repository
github
Last release
7 years ago

eventDispatcher

JavaScript events for custom objects

Build Status npm version devDependency Status Dependencies

Install

npm

$ npm install gr-event-dispatcher

API

eventDispatcher~addEventListener(type, listener) ⇒ Object

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 that eventDispatcher is applied to is not extensible.
ParamTypeDescription
typeStringA string representing the event type to listen for.
listenerfunctionA function to be executed when an event of the specified type occurs.

eventDispatcher~hasEventListener(type, listener) ⇒ Boolean

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.

ParamTypeDescription
typeStringA string representing the event type.
listenerfunctionThe event listener to check if registered for the specified event type.

eventDispatcher~removeEventListener(type, listener) ⇒ Object

Removes the previously registered event listener from the event target.

Kind: inner method of eventDispatcher
Returns: Object - The eventDispatcher object.

ParamTypeDescription
typeStringA string representing the event type to remove.
listenerfunctionThe event listener function to remove from the event target.

eventDispatcher~dispatchEvent(event) ⇒ Object

Dispatches an event at the specified event target.

Kind: inner method of eventDispatcher
Returns: Object - The eventDispatcher object.

ParamTypeDescription
eventObjectThe event object to be dispatched.

eventDispatcher~apply(object) ⇒ Object

Applies the eventDispatcher prototype methods to the event target.

Kind: inner method of eventDispatcher
Returns: Object - The eventDispatcher object.
Throws:

  • TypeError If the object that eventDispatcher is applied to is not extensible.
ParamTypeDescription
objectObjectThe event target object.

Example

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);