is event emitter baked in to all objects?

Posted on
  • In node/browser if I need to incorporate an event emitter I either use the native events module or third party. Typically I'd create a new class by extending the event emitter. Like so.

    import EventEmitter from 'events'
    class SomeClass extends EventEmitter {
      constructor() {

    but it seems that all (plain?) objects in Espruino have an event emitter baked in by default.­ect_emit

    So when I make a new class or make an object like so I get an event emitter as well?

    Is the actual event emitter module available? If so where is that in the api docs

    const obj = {}
    class SomeClass {
      constructor() {
    const cls = new SomeClass()
    obj.on('test',  val => { console.log(val) })
    cls.on('test',  val => { console.log(val) })
  • Yes, that's right. There's no explicit EventEmitter class. At the moment it is in all objects by default - initially the performance cost of adding it to every object was less than having two different kinds of object. It's something I did plan on changing at some point but it's been low priority.

  • Post a reply
    • Bold
    • Italics
    • Link
    • Image
    • List
    • Quote
    • code
    • Preview

is event emitter baked in to all objects?

Posted by Avatar for dgk @dgk