Dean Landolt wrote:
On Tue, Oct 23, 2012 at 11:53 AM, Brendan Eich <[email protected] <mailto:[email protected]>> wrote:

    Herby Vojčík wrote:

        Brendan Eich wrote:

            Herby Vojčík wrote:

                By the way, let deprecate (that is, recommend not to
                use) __proto__
                and introduce @parent (or other term) instead, while
                both having the
                same behaviour.


            We could do this, given symbols, but would it help? New
            code could use
            it in the next several years only with an ES6->ES5
            compiler and ignoring
            IE on desktop; this is a real possibility for "mobile
            developers",
            self-defined. But developers could just as well use
            __proto__ and
            probably will skip the compiler without strong need for
            other ES6 features.

            This means we're adding a nicer synonym for the very long
            run. Which
            means two things, more total surface syntax, more "cruft"
            from certain
            points of view. Is it worth it?


        I think 'cruft' is too strong. There will be two things that
        do the same thing, one 'legacy', one new. Though I can not
        give an example, I have the impression things like that
        happens (use X, there is Y for compatibility, for it is not
        endorsed now...) often.


    Number.isNaN adds value, by not coercing non-number arguments to
    number, compared to isNaN. Ditto similar innovations, see
    https://brendaneich.com/2012/10/harmony-of-dreams-come-true/ near
    the bottom.

    By contrast, @parent would be no better in function (ignore form)
    from __proto__.


Isn't there some value in stratification?

You mean using a symbol not a string? "Stratification" usual means a meta-layer API not defined in a base-level object, not a name-kind change.

Wouldn't this make it possible to move __proto__ back to a non-normative note, so that one day,

We don't have plans to remove things. It's hard to make such on the web. We could hope, but it's not really relevant.

maybe...just maybe, it can be forgotten altogether? I an Object.setPrototypeOf API has been suggested before -- but if it were specified with @prototype then all legacy uses of __proto__ could be shimmed inside this official API surface.

1. No, we rejected a static method because it would have to be neutered in SES environments but those may want to mash up within one realm, so Object.foo is a pigeon-hole problem and neutering breaks valid users in the non-SES code.

2. What's more, having two things forever instead of three hardly beats having one thing, unless you over-weight the cost of dunder-proto. A rose by any other name...

You say "nicer synomym for the very long run", but in the *very* long run why couldn't it be a true replacement?

Because we cannot and do not plan on removing anything. It's not practical on the web. It might be possible, who knows? But in realistic, predictable, and foreseeable terms, all we are doing is adding complexity and redundancy (ignoring the undesirable point (1) above).

The web isn't pretty. It's not the Mona Lisa. But (as Anders patiently points out in the GOTO interview mentioned recently) all practical, mature languages have quirks and ugly spots.

Not to defend JS too much, it could be prettier -- but this thread won't actually achieve anything as far as the eye can see. Do rouge and lipstick make the wart of __proto__ into a beauty spot? Only if you turn a blind eye.

Considering all the opinions around accessor usage in the standard, I'd think eliminating this dunder-wart would be a pretty nice aesthetic win.

Not sure what you mean. I'm ok with either magic data or accessor with poisoned reflection, and either is sufficiently compatible. Doesn't affect anything in this thread.

/be
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to