So let's assume there is such a registry. You can avoid accidental collisions
with the ugliest name in the universe -- gensym that thing to the n'th degree
-- but you're no longer forcing all clients to deal with the ugliness. You've
abstracted it behind your library. Let's say I'm implementing a serialization
library and want to create a @@serialize symbol for people to coordinate on.
I'd do something like the following:
// serialize.js
import { lookup, register } from "js/registry";
const myGUID =
"__@@blaaaaarrrgggghhhAAAAAUUUUUGGGGHHHfnordfnordfnord29834983413451839512@@__";
export default = lookup(myGUID) || register(myGUID, new Symbol("friendly
name"));
Now every client simply gets to use
import serialize from "serialize";
obj[serialize] = function() { ... };
without having to care about how ugly the GUID used in the registry was.
Dave
On Sep 26, 2013, at 4:07 PM, "Mark S. Miller" <[email protected]> wrote:
> I think we swept the collision problem under the registry rug. Let's start by
> discussing registry designs assuming we do have Symbols. Let's see if we can
> design a registry that allows cross-realm duck typing without re-introducing
> the same possibility of accidental collision that we'd have without Symbols.
> Note: For this question, malicious collision is not an issue.
>
>
> On Thu, Sep 26, 2013 at 4:02 PM, Rick Waldron <[email protected]> wrote:
>
>
>
> On Thu, Sep 26, 2013 at 6:51 PM, Domenic Denicola
> <[email protected]> wrote:
>
>
> > On Sep 26, 2013, at 18:49, "Yehuda Katz" <[email protected]> wrote:
> >
> > Private state doesn't satisfy these requirements because they trap on the
> > wrong side of the proxy.
>
> Agreed, in many cases I don't want private state; I *want* something that can
> be copied by Object.mixin, for example. For private state, weak maps are
> fine, and used today already.
>
>
> Agreed with Yehuda and both of Domenic's points. I don't need/want Symbol for
> private anything—I want it for cases that don't deserve a WeakMap, should be
> reflected and can be "seen" by Object.getOwnPropertySymbols(), but want to
> avoid the possibility of collision.
>
> Rick
>
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
>
>
>
>
> --
> Cheers,
> --MarkM
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss