Advertisement
miheev121

my event listener

Nov 15th, 2019
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function EventEmitter() {
  2.   this._listenersObj = {};
  3. }
  4.  
  5.  
  6.  
  7. EventEmitter.prototype.emit  = function (event) {
  8.     const listeners = this._listenersObj[event];
  9.     if(listeners) {
  10.       listeners.forEach((listener) => {
  11.         console.log('emit event', event);
  12.         listener();
  13.       });
  14.     }
  15.   }
  16. EventEmitter.prototype.on = function(event, listener) {
  17.   let x = this._listenersObj[event];
  18.   this._listenersObj[event] = Array.isArray(this._listenersObj[event]) ? [...this._listenersObj[event], listener] : [listener];
  19. }
  20.  
  21. EventEmitter.prototype.off = function(event, listener) {
  22.   const x = this._listenersObj[event];
  23.   if(x) {
  24.     const listenerIndexToRemove = x.indexOf(listener);
  25.     if(listenerIndexToRemove !== 1) {
  26.       x.splice(listenerIndexToRemove, 1);
  27.     }
  28.     if(x.length === 0) {
  29.       delete this._listenersObj[event];
  30.     }
  31.   }
  32.   console.log('listener was removed',  this._listenersObj);
  33. }
  34.  
  35. function listener() {
  36.   console.log('listener was called')
  37. }
  38.  
  39. const emitter = new EventEmitter();
  40.  
  41. emitter.on('dfg', listener);
  42. emitter.emit('dfg');
  43.  
  44. emitter.off('dfg', listener);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement