Andreas Rossberg wrote:
On 23 March 2012 08:42, Claus Reinke <claus.rei...@talk21.com
<mailto:claus.rei...@talk21.com>> wrote:

    - would it make sense to name the constructor after the class
       (avoiding 'constructor' and 'new')?


-1.

I always considered this a bad choice of C++-derived class systems. It
violates Don't-repeat-yourself, and thus is annoying e.g. when you
rename things. It is less searchable and less readable locally, because
you have to take the name of the surrounding class into account to
decide what kind of declaration you are looking at. And it doesn't scale
to anonymous classes, in case these ever become an option for ES.
Good point. ;-)

The 'constructor' gets created anyway if classes are to be compatible with plain constructor functions semantics. That is big plus for 'constructor' (and big minus for 'new' since people may look for Class.prototype["new"} and not find it).

I will repeat myself, I proposed this thing but no one reacted. It's short, does not clash as new mentioned before, and does not preclude constuctor magic in any way:

class Class extends SuperClass {
  @(params) { body } // constructor
  @x(params) { body } // private-named method
  y(params) { body } // plain method
}

Of course, this syntax is based on '@xxx' private name access pattern is also in the language - constructor is intentionally reusing this syntax, but with 'empty identifier' - as a special short construct to use for constructor. Reusing private name syntax is safe as to name clash, because it does not clash with property names (and using empty identifier, neither does clash with real private names).

/Andreas

Herby
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to