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" <erig...@google.com> 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 <waldron.r...@gmail.com> wrote: > > > > On Thu, Sep 26, 2013 at 6:51 PM, Domenic Denicola > <dome...@domenicdenicola.com> wrote: > > > > On Sep 26, 2013, at 18:49, "Yehuda Katz" <wyc...@gmail.com> 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 > es-discuss@mozilla.org > https://mail.mozilla.org/listinfo/es-discuss > > > > > -- > Cheers, > --MarkM > _______________________________________________ > es-discuss mailing list > es-discuss@mozilla.org > https://mail.mozilla.org/listinfo/es-discuss _______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss