On Jul 19, 2011, at 11:23 AM, Brendan Eich wrote:
> On Jul 19, 2011, at 11:07 AM, Bob Nystrom wrote:
>> // "new" lets you declare members on new instances. these would presumably be
>> // invoked on the new object before the constructor body is run.
>> numAttacks = 0;
>> // declaring an instance property here mainly so you can document it.
>> could be
>> // useful later for guards or other annotations.
> The plain name; also looks like a useless expression-statement.
When we talked some people pretty strongly felt that it was very desirable to
be able to explicitly declare the intended per instance properties. In
addition to document purposes such declaration might, for example, be used for
things like linting for this.mispellings in the body of the function. Such
explicit declarations are probably essential if they are private properties.
But I don't see any problem with requiring inclusion of an initial value, even
it it is going to be |undefined.|
> Beyond this, I'm concerned that per-instance properties need initializers
> that use constructor parameters. So they ought to be initialized in the
> Whether they can be declared outside the constructor is a separate issue.
> Perhaps if they have constant or constructor-invariant initializers, they can
> be initialized where declared too.
This seemed to be a big issue in the past that caused a lot of thrashing about
how to put such declarations inside the constructor. Backing off from that
requirement would be helpful.
> But declarations should look different from expressions. The alternative we
> keep returning to is the property assignment sub-grammar of object literals,
> which would want
> numAttacks: 0;
> with a semicolon not a comma.
some thoughts -- why does the punctuation following the new (or class or
prototype or whatever). For example, what about
that looks more distinctly like a section break and different from a property
name (and otherwise how would one define a property name new or class or
prototype or private?)
Also, why ; instead of , like in object literals (alternatively could we allow
use of ; as a separator in object literals). It seems desirable to have
consistency of property definitions between object literals and class
es-discuss mailing list