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.


Reply via email to