On Thu, Sep 13, 2012 at 1:46 PM, Dean Landolt <[email protected]> wrote:
> > > On Thu, Sep 13, 2012 at 12:09 PM, Erik Arvidsson <[email protected] > > wrote: > >> On Thu, Sep 13, 2012 at 8:37 AM, Kevin Smith <[email protected]> wrote: >> > 1) Is method name-collision a practical problem, or just a theoretical >> > problem? If it's just a theoretical problem, then we don't need unique >> > names, and in teaching the language we can simply guide users away from >> > trying to create "private methods". In fact, without supporting syntax >> it's >> > unlikely that users would even bother trying to create them in the first >> > place. >> >> Yes. This is a real problem. >> >> It is a common problem that we see a lot with "private" members using >> naming conventions. >> >> class Base { >> constructor() { >> this._element = ...; >> } >> } >> >> class Derived extends Base { >> constructor() { >> this._element = ...; // OOPS! >> } >> } >> > > > Another good example where this is a problem is on prototype chains, a > good example of which you parenthetically noted (iterators). With unique > names it becomes feasible to hang any properties and methods you want off > of prototypes without worrying about collision. For instance, imagine an > persistance lib with a Record.prototype.save method: > > var rec = new Record({ save: 'whoops' }); > rec.save() // TypeError: Property 'save' is not a function > > And thus we all fall back to the lovely Record.prototype.save.call(rec) > pattern. Unique names neatly sidestep this, giving us back our prototype > chains. > This could also be designed to use a WeakMap as the "store" for the data :) https://gist.github.com/3716743 Rick > > _______________________________________________ > 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

