Object.getPrototypeOf would not help me at all since it would not allow me to assign a *new* __proto__ to a function I just created, but I *am* mistaken, Function.create() would be sufficient in my cases.
There's still more flexibility in __proto__ to reassign __proto__, which Function.create and Object.getPrototypeOf would not provide. On Tue, Sep 24, 2013 at 10:14 AM, Andrew Kelley <[email protected]>wrote: > Adam - > > Please read my question again:* What happens if you replace foo.__proto__ > with Object.getPrototypeOf(foo)? * > > > On Tuesday, September 24, 2013 1:11:19 PM UTC-4, Adam Crabtree wrote: > >> 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<http://productforums.google.com/forum/#!msg/docs/0hQWeOvCcHU/13arVnFhU4YJ> >>>> [2] >>>> https://github.com/**CrabDude/trycatch/issues/23<https://github.com/CrabDude/trycatch/issues/23> >>>> [3] >>>> https://github.com/**CrabDude/proxis/blob/master/**proxis.js#L121<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<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 >>>>> nodejs+un...@**googlegroups.com >>>>> >>>>> For more options, visit this group at >>>>> http://groups.google.com/**group/nodejs?hl=en?hl=en<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+un...@**googlegroups.com. >>>>> >>>>> For more options, visit >>>>> https://groups.google.com/**groups/opt_out<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<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 >>>> nodejs+un...@**googlegroups.com >>>> >>>> For more options, visit this group at >>>> http://groups.google.com/**group/nodejs?hl=en?hl=en<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<https://groups.google.com/d/topic/nodejs/HvwsNAuAN2Q/unsubscribe> >>>> . >>>> To unsubscribe from this group and all its topics, send an email to >>>> nodejs+un...@**googlegroups.com. >>>> >>>> For more options, visit >>>> https://groups.google.com/**groups/opt_out<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<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 >>> nodejs+un...@**googlegroups.com >>> >>> For more options, visit this group at >>> http://groups.google.com/**group/nodejs?hl=en?hl=en<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+un...@**googlegroups.com. >>> >>> For more options, visit >>> https://groups.google.com/**groups/opt_out<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. > -- 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.
