Excellent thank you

On Wednesday, 20 March 2013 21:58:21 UTC-7, Postlethwaite wrote:
>
> I have a little code question for you.
>
> *code:*
>
> var EventEmitter = require('events').EventEmitter
>
>  
>
> function buildEmitters(name) {
>
>   var self = new EventEmitter
>
>   function sayWhat () {
>     self.emit('what')
>   }
>
>   self.on('what', function () {
>     console.log(name + ' says what')
>   })
>
>
>   function addGroup (group) {
>     self.on(group, function () {
>       console.log(name + ' was called by group, what')
>     })
>   }
>
>   function callGroup (group) {
>     self.emit(group, name)
>   }
>
>   self.sayWhat = sayWhat
>   self.addGroup = addGroup
>   self.callGroup = callGroup
>
>   return self
>
> }
>
>
>
> var A = buildEmitters('grep')
>     , B = buildEmitters('cat')
>     , C = buildEmitters('tar')
>
>
> A.addGroup('wheel')
> B.addGroup('wheel')
> C.addGroup('wheel')
>
>
> A.sayWhat()
> B.sayWhat()
>
> C.callGroup('wheel')
>
>
> which outputs:
>
> grep says what
> cat says what
> tar was called by group, what
>
> I would like it to say:
>
> grep says what
> cat says what
> tar was called by group, what
> cat was called by group, what
> grep was called by group, what
>
> I know I can use the
>
> if (!(this instanceof buildEmitters)) return new buildEmitters()
> EventEmitter.call(this)
>
>
> along with the 
>
> buildEmitters.prototype = new EventEmitter
>
>
> and in the addGroup method:
>
> buildEmitters.prototype.on(group, callback)
>
> and in the callGroup method:
>
> buildEmitters.prototype.emit(group)
>
>
> pattern. It works, and it's used everywhere.
>
> *problem:*
> But I am attempting to write code without inheritance and prototype calls. 
> Zero.
> Just clean and simple little objects. 
>
> *question:*
> Is it possible to get 'events' to propagate between the objects that *
> buildEmitters* creates? Any patterns, hacks or blatantly obvious 
> workarounds that I am missing?
>
> Thanks!
>
>
>

-- 
-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to nodejs@googlegroups.com
To unsubscribe from this group, send email to
nodejs+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to nodejs+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to