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.
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to