If you create many objects of the same Writable type, it'll be significantly faster to subclass and use a constructor. If you only create one (or a very small number) it's equivalent performance-wise.
I prefer to subclass if I'm going to add a lot of custom functionality, just because it's a bit cleaner in other code that uses that class. For example, Socket objects inherit from Duplex, which inherits from Readable (prototypally) and Writable (parasitically). I'd accept a doc patch that mentions the error event, but it should probably just link back to the events.html page where it's explained. There's a lot of duplication in our documentation, but sadly, even the duplication is not quite consistent, so you end up having holes like this. On Mon, Apr 8, 2013 at 12:15 AM, greelgorke <[email protected]> wrote: > not really. you create the function once on module load, assignment is in a > creation: > > foo.js: > var Writable = require('stream').Writable > , _write = function(chunk, encoding, callback){ > // do something with chunk > // this ref points to a Writable instance > } > > module.exports = myCustomStream(){ > var s = new Writable() > s._wirte = _write > return s > } > > > it may be even more performant, because the _write function sits in the > object itself not in it's prototype. A lookup up the prototype chain is less > performant, than a lookup of the 'own' property. > > but first you have to benchmark your specific case, before arguing about > performance. > > Am Montag, 8. April 2013 04:07:59 UTC+2 schrieb Liam: >> >> Isn't there a cost of assigning a function to an object every time you >> create such an object, vs. assigning to .prototype of a subclass? >> At the very least you're creating a closure around any variables in scope >> at the point of the assignment. >> >> >> On Sunday, April 7, 2013 1:27:50 PM UTC-7, greelgorke wrote: >>> >>> 2. both ways work. you could subclass or just create a Writabel instance >>> and attach a new _write function. It's more a matter of style and applied >>> paradigm. some prefer the mixin-approach, some inheritance. me personally >>> prefer the mixin approach, because it's cleaner and more focused on actual >>> work, than pseudoclass-boilerplating. >>> >>> Am Sonntag, 7. April 2013 21:02:04 UTC+2 schrieb Liam: >>>> >>>> The v0.10 docs don't mention an 'error' event for Stream.Writable. Is >>>> that a docs omission, or an API change? >>>> >>>> Stream.Writable#write() takes a callback that provides an error, but the >>>> callback is described as 'optional'. If errors were only reported this way, >>>> surely it wouldn't be optional? >>>> >>>> Also, the docs don't give an example of defining a custom >>>> Stream.Writable. Should we define a subclass formally, or simply: >>>> >>>> var s = new Stream.Writable() >>>> s._write = function(...) {} // feels odd; I'm used to attaching >>>> functions to prototypes >>>> > -- > -- > 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 [email protected] > To unsubscribe from this group, send email to > [email protected] > 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 [email protected]. > For more options, visit https://groups.google.com/groups/opt_out. > > -- -- 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 [email protected] To unsubscribe from this group, send email to [email protected] 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 [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
