One thing that I still would add (and haven't seen mentioned in the proposal) are computed property names. Manually creating private names is not a problem, neither is using this[] to add private instance data properties. But having to add private methods externally to the class declaration would be cumbersome.
[[[Sent from a mobile device. Please forgive brevity and typos.]]] Dr. Axel Rauschmayer [email protected] Home: http://rauschma.de Blog: http://2ality.com On 25.03.2012, at 07:20, Allen Wirfs-Brock <[email protected]> wrote: > > On Mar 24, 2012, at 7:29 PM, Brendan Eich wrote: > >> David Herman wrote: >>> On Mar 24, 2012, at 3:01 PM, Nadav Shesek wrote: >>> >>>> What about setting arbitrary expressions as the value for prototype >>>> methods? Being able to use higher-order functions to dynamically create >>>> functions is very important for functional style programming. I use it >>>> very often to decorate functions, compose functions together, set >>>> partially applied functions as methods, etc. It seems to be impossible >>>> with syntax proposed here - I think adding it to the "safety syntax" is >>>> very much needed and should not be over looked. >>> >>> Yep, we already agreed to this -- see the grammar on Allen's "maximally >>> minimal" proposal: >>> >>> >>> http://wiki.ecmascript.org/doku.php?id=strawman:maximally_minimal_classes#class_declarations_and_expressions >> >> I don't see what I read Nadav as asking for: the ability to initialize a >> prototype method from an arbitrary expression. What am I missing? > > I suspect Dave misinterpreted Nadav's question. So did I, when I originally > read it. > > The "superclass" can be set to an arbitrary AssignmentExpression. This > permits using a higher-order functions to be to define the [[Prototype]] of > the class' prototype object. Potentially this mechanisms might be used to > essentially have the effect of injecting dynamically generated methods into > the class definition. However, they would be inherited methods of the > prototype object rather than own methods, although that may not matter. > > To actually add a computed function as the value of a prototype object > property within the class definition is pretty much the same thing as > defining an arbitrary valued prototype data property. Defining non-method > prototype properties is one of the features that we have previous been unable > to reach consensus on and for that reason was intentionally excluded from the > maximal-minimal proposal. As the proposal says: > > "There is (intentionally) no direct declarative way to define either > prototype data properties (other than methods) class properties, or instance > property" > "Class properties and prototype data properties need be created outside the > declaration." > > > Allen > > > > _______________________________________________ > es-discuss mailing list > [email protected] > https://mail.mozilla.org/listinfo/es-discuss
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

