Skip to content

Instantly share code, notes, and snippets.

@scriptype
Last active October 25, 2016 17:27
Show Gist options
  • Save scriptype/3df2d304a84548b0d4d9e44159ed2ffe to your computer and use it in GitHub Desktop.
Save scriptype/3df2d304a84548b0d4d9e44159ed2ffe to your computer and use it in GitHub Desktop.
function EventEmitter(options) {
this._listeners = []
}
EventEmitter.prototype.on = function(event, handler) {
this._listeners[event] = this._listeners[event] || []
this._listeners[event].push(handler)
}
EventEmitter.prototype.off = function(event, handler) {
if (this._listeners[event]) {
this._listeners[event] = this._listeners[event].filter(h => h !== handler)
}
}
EventEmitter.prototype.emit = function(event, data) {
if (this._listeners[event]) {
this._listeners[event].forEach(handler => {
handler({ event, data })
})
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment