Skip to content

Instantly share code, notes, and snippets.

@joyrexus
Created February 25, 2014 03:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save joyrexus/9201836 to your computer and use it in GitHub Desktop.
Save joyrexus/9201836 to your computer and use it in GitHub Desktop.
Extending EventEmitter

A quick demonstration of how node's EventEmitter can be extended.

See this gist for another example, demonstrating how EventEmitter can be used to implement the Observer pattern.

EventEmitter = require('events').EventEmitter
class Person extends EventEmitter
constructor: (@name) -> super()
move: (steps) -> @emit 'move', steps
walk: (steps) ->
@emit 'walk'
@move steps
bob = new Person('Bob')
ann = new Person('Ann')
# register callbacks to respond to events
log = (n) -> console.log "#{@name} moved #{n} steps."
bob.on 'move', log
bob.on 'move', -> console.log "#{@name} falls down!"
ann.on 'move', log
ann.on 'walk', -> console.log "#{@name} walks gracefully!"
bob.move(5)
ann.walk(8)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment