Matthew Robb wrote:
On the issue of calling class constructors, I would AT LEAST have
preferred implicit new on all calls to class constructors. Sure you
might get extra allocation weight but the way it stands now seems like
it could only lead to errors in people's assumptions...
An error caught by a throw is better than one that escapes as a
silent-but-deadly (never mind allocation weight) difference in runtime
semantics.
In case it helps, the idea mooted for ES7 is that you'd add a "call
handler" to the class for when it is invoked without `new`:
class Point2D {
constructor(x, y) { this.x = x, this.y = y; }
[Symbol.call](x, y) { return new this.constructor(x, y); }
...
}
I used `this.constructor`, but of course using `Point2D` directly is
possible. In that case, subclasses would have to override the
`[Symbol.call]` method, which seems undesirable and easily avoided as
shown above.
Bottom line, we don't want an implicit call handler in ES6. We need to
get this right in ES7, and failing hard for now is the only way to be
future-proof.
/be
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss