I prefer Symbol names for the reasons I said at the last meeting: * Non-enumerability by default (the other solutions presented in this thread are finicky, harder to explain, and potentially error-prone). * Guaranteed duck-testability: if an object tests positive for iterability, it much be intentional. Once we start using @ as a symbolic prefix, userland libraries will likely start to use it too, making duck-tests of future names inconclusive. I'm also not convinced that @foo isn't already used for this purpose in the wild, but even if that's true, it only solves the issue for one generation. * Intention-preserving: You get to use a short, English name as the method name with just a bit of syntactic chrome, and you don't have to worry about the tradeoff between collisions and leaking indecipherable names to debugging.
Yehuda Katz (ph) 718.877.1325 On Thu, Sep 26, 2013 at 3:33 PM, Allen Wirfs-Brock <[email protected]>wrote: > > On Sep 26, 2013, at 3:13 PM, Rick Waldron wrote: > > > > > On Thu, Sep 26, 2013 at 6:02 PM, Erik Arvidsson > <[email protected]>wrote: > >> No surprise here, but I also support using "@" methods. > > > I don't. Please see my response to Kevin Smith: > https://mail.mozilla.org/pipermail/es-discuss/2013-September/033720.html > > > I'm also in >> favor of making methods non enumerable by default. This makes them >> more consistent with what we have in ES today. > > > That might be the case for methods defined on prototypes of built-in > objects, but it's absolutely not the case for user land code. Please see > the examples in my previous response to Allen: > https://mail.mozilla.org/pipermail/es-discuss/2013-September/033725.html > > > so name your events property "@RickWaldron@events". > > If somebody subclasses Emitter and know that property name, then they must > be doing something intentional. > > Unique Symbols don't guarantee that sort of integrity. All you've > accomplish by using them as in your example is to minimize that chance that > somebody else doesn't accidentally use the same property name for some > other purpose. Naming your property "@RickWaldron@events" also makes > such accidentally unlikely. > > Allen > > _______________________________________________ > 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

