I agree with the advantage of a declaration containing a name and with it being similar to functions.
I tried a synthesis of the current inheritance/class proposals: https://gist.github.com/1374226 Comments welcome; it might please nobody by trying to please everybody. On Nov 17, 2011, at 20:20 , Russell Leggett wrote: > On Thu, Nov 17, 2011 at 12:04 PM, Allen Wirfs-Brock <[email protected]> > wrote: > OK, I have a fix for the missing constructor problem. See: > http://wiki.ecmascript.org/doku.php?id=strawman:class_operator#missing_constructors > > > > The biggest thing I see missing is a declarative form that includes the name. > I just think its so close, that to not include a form > > class Point {...} > > Which can desugar to create a var Point at the very least, would be a bit of > a tragedy. I think most people will see the class operator and think about it > as analogous to function. > > Another piece which might not be as big a deal is that [[ctor]] is not the > same as 'constructor', and in the cases with a missing 'constructor', the > result of 'class Proto' would seem like it makes (or fetches) a function that > behaves like a proper constructor function, but it will result in an instance > whose prototype does not have an own 'constructor' property. (I think I even > confused myself with that, sorry) > > The alternative proposal I've been advocating that always creates a new > function and prototype makes tradeoffs in the other direction. It does not > require [[ctor]], or automatic .prototype references from constructor to the > enclosing object literal. It also makes it trivial to include a name on the > constructor function without mutation (because a new function is being made). > OTOH, because it always creates a new function with a fresh prototype that > points up to UnaryExpression, you get this important difference: > > let f = new Foo(); > let isSame = (class f === Foo); > //isSame is true for allen's proposal, but false for mine. > //however, mine would behaviorally be the same (barring serious > inspection) > > At this point, if Allen's proposal included a declaration form 'class Point > {...}' I would be ready to get behind it. I still have a fondness for mine, > which is used purely for defining classes, but for most cases, his would work > equally well in the ways I would want to use it. > > - Russ > _______________________________________________ > es-discuss mailing list > [email protected] > https://mail.mozilla.org/listinfo/es-discuss -- Dr. Axel Rauschmayer [email protected] home: rauschma.de twitter: twitter.com/rauschma blog: 2ality.com
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

