The situations I'm talking about were both cases where I needed to set the
__proto__ of a function to inherit from another object or function. One is
an instance where Function.create is insufficient because I did not create
the originating function.


On Sat, Sep 21, 2013 at 12:31 PM, Andrew Kelley <[email protected]>wrote:

> Adam -
>
> I am interested in the code where using __proto__ was the only solution.
> This would be a counter-example to my initial claim #2. What happens if you
> replace foo.__proto__ with Object.getPrototypeOf(foo)?
>
>
>
>
> On Fri, Sep 20, 2013 at 4:03 PM, Adam Crabtree <[email protected]>wrote:
>
>> Removing __proto__ is both naive and misinformed for several reasons.
>>
>> Further, there is nothing in Domenic's dict project that suggests the
>> presence of __proto__ is itself a problem. At best, it implies its use will
>> somehow "ruin your day" with a link to a google docs bug[1] that merely
>> illustrates the need for Object.create(null), which has *nothing* to do
>> with Google Docs *using* __proto__. It also doesn't address any of the
>> functionality __proto__ provides, which is of course expected b/c that's
>> not the point of the dict module.
>>
>> To be fair to Domenic, we're almost certainly recontextualizing his
>> points, so they especially don't apply here at all.
>>
>> At any rate, here's a list of reasons removing __proto__ is a bad idea:
>>
>> 1. Node.js === V8, and since V8 has __proto__ there's plenty of code
>> (both libraries and application code) that use __proto__. Do you have a
>> good reason why having it will cause more damage than breaking all existing
>> code that does?
>>
>> 2. I really hope it's not removed from strict mode until the language
>> provides equivalent functionality. Think Object.create is sufficient? What
>> about Function.create, Error.create or even Array.create? I've had handful
>> of cases both in library code and application code where the best solution
>> was to use __proto__ and several times where it was the only solution[2,3].
>>
>> 3. Even if Function.create and Error.create existed, what about
>> reassigning after creation in cases where your application code did not
>> create it?
>>
>> Let's not fork to create a handcuffed version of the language.
>>
>> Cheers,
>> Adam Crabtree
>>
>>
>>
>> [1]
>> http://productforums.google.com/forum/#!msg/docs/0hQWeOvCcHU/13arVnFhU4YJ
>> [2] https://github.com/CrabDude/trycatch/issues/23
>> [3] https://github.com/CrabDude/proxis/blob/master/proxis.js#L121
>>
>>
>> On Fri, Sep 20, 2013 at 11:35 AM, Jorge Chamorro <[email protected]
>> > wrote:
>>
>>> On 20/09/2013, at 15:40, mks wrote:
>>>
>>> > {} is not an hash table. Object.create(null) is more likely
>>>
>>> That, *and* kill the __proto__, if not:
>>>
>>> hash= Object.create(null);
>>> key= '__proto__';
>>>
>>> hash[key]= 27;
>>> hash[key]
>>> null    //What?
>>>
>>> Or worse:
>>>
>>> hash[key]= this;
>>> 'require' in hash
>>> true    //What?
>>> 'console' in hash
>>> true    //What?
>>> 'Array' in hash
>>> true    //What?
>>>
>>> etc.
>>> --
>>> ( Jorge )();
>>>
>>> --
>>> --
>>> 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.
>>>
>>
>>
>>
>> --
>> Better a little with righteousness
>>        than much gain with injustice.
>> Proverbs 16:8
>>
>> --
>> --
>> 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 a topic in the
>> Google Groups "nodejs" group.
>> To unsubscribe from this topic, visit
>> https://groups.google.com/d/topic/nodejs/HvwsNAuAN2Q/unsubscribe.
>> To unsubscribe from this group and all its topics, 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.
>



-- 
Better a little with righteousness
       than much gain with injustice.
Proverbs 16:8

-- 
-- 
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