On 26.06.2011 0:49, Brendan Eich wrote:
On Jun 25, 2011, at 11:13 AM, Axel Rauschmayer wrote:
I don’t know if this has been discussed, but I find the |super| work-around
provided by YUI and CoffeeScript (in the generated code) not that bad:
ThisClass.__super__.foo.call(this, arg1, arg2);
I'm not sure what you mean. If we add 'super', surely we want more than the
__super__ hack. We also want a callable expression 'super' in constructors, and
a 'super.foo' form for method and other property accesses from subclass
methods. We don't want people writing out .call by hand.
Apologize in advance if I'm mentioning already discussed thing in these
classes-related topics (unfortunately hadn't enough of time to read them
all and follow), but from what I can say, people want to write also and
_mostly_ _just_ `super`, not even `super.foo` (though, of course
`super.foo` notation would be also nice to have -- to be able to call
_any_ parent method).
Again, we even _now_ (vis simple JS class-library) can write normal
`this.super(...)` calls from _any_ descendant method (and could even in
ES3 era, though, via `this._super(...)`) -- that is without specifying
exact parent name (i.e. `super.foo`) which in case of the same method is
just again is the syntactic noise. So it's important thing to have
_just_ super(...) -- if it's a sugar, let it be really the sugar
(because if not, why do I need it at all if I can achieve even better
with a library?). And _in addition_ -- super.otherMethodName notation.
Dmitry.
With ThisClass.__super__ pointing to SuperClass.prototype.
The CoffeeScript compiler can lexically bind ThisClass and wire up __super__
with generated runtime helper code. That's all backstage of the CoffeeScript
*language*, though.
As a completely static solution, one could maybe expand a super-call
super.bar(x, y);
to
__CurrentObject__.[[Prototype]].bar.call(this, x, y);
On the other hand, I don’t know if a reference to __CurrentObject__ is ever
available for some kind of static expansion.
Are you talking about |here| again, with a new name? There is no static
counterpart other than the one Allen proposed, the object literal directly
containing the method that uses 'super'.
/be
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss