On Mon, Jun 20, 2011 at 1:27 PM, Axel Rauschmayer <[email protected]> wrote:
> Terminology (created by me, but I think it explains well what is going on):
> - |this| points to the object where property lookup starts. It always points
> to the beginning of the prototype chain.
> - |here| points to the object where a property was found. |here| can point
> to any object in the prototype chain.
> |super| starts property lookup in the prototype of |here|, but does not
> change |this|. That is, a method invoked via |super| still has the same
> |this| and property lookup via |this| is unchanged. If the super-method
> again uses |super|, then property lookup will begin in the prototype of
> |here| (= where the super-method has been found). Etc.
It doesn't seem quite right that an upward call like
Object.getPrototypeOf(here).foo.call(this)
has sugar
super.foo()
but sideways calls like
here.foo.call(this)
don't have any sugar.
By the way, I like this idea that "super" is available all the time
(not just in an initializer) like "this" is always available; however,
adding another implicit variable "here" which is dynamic like "this"
is disconcerting as "this" has been quite a wild beast in JavaScript
to say the least.
Peter
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss