Mark S. Miller wrote:
On Tue, Jul 30, 2013 at 9:19 PM, Brendan Eich <[email protected] <mailto:[email protected]>> wrote:

    Mark Miller wrote:

        On Tue, Jul 30, 2013 at 8:36 PM, Brendan Eich
        <[email protected] <mailto:[email protected]>
        <mailto:[email protected] <mailto:[email protected]>>> wrote:

            Mark S. Miller wrote:

                Aside from this confinement issue, all other the
        advantages
                that unique symbols have over unique-ish strings seem
        minor to
                me. The biggest is default non-enumerability, when we're
                getting away (admittedly slowly) from enumerability being
                significant anyway. IMO, if the only advantages of unique
                symbols over unique-ish strings are these minor ones, then
                they don't pull their weight.

                However, I don't understand the confinement scenario
        you have
                in mind. Can you give an example?


            A friend field a la C++ "friend", e.g.:

            module ... {
              const friend = Symbol(); // however it's spelled
              class A { ... }
              class B { ... }
            }

            where fiend is used in the ... elisions but only to access
            properties of objects known to be instanceof A or B.


        Known how?


    Lots of ways, e.g., |this| in bound methods,


Only useful for instance-private instance variables, in which case you may as well use lexically captured per-instance state.

No, "friend" is shared between two classes, no way to make a closure per instance extending over both constructors. Pretend the module above is an IIFE.

    |this| after suitable instanceof tests with no mutable
    [[Prototype]] (e.g., A and B  are sealed, manually in ES6 alas,
    but still doable).


Doesn't resist theft by proxy, since one can easily construct a proxy that passes that instanceof test.

Ok, forget instanceof. With |this|-binding all around, what's the leak? More generally, are you arguing that leaks are hard to avoid, so we need private fields instead? That fits the relationship vs. unique symbol dichotomy.

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

Reply via email to