> let me reformulate .. do you realize Object,mixing can be done runtime, so
> not possible to predefine the super, and that you method fails if you have
> more than a super in such form ? If not, can you write B extends A and C
> extends B and use super in both C and B methods going up to A or do what my
> example was doing ?
You don’t predefine super, you only have to keep [[HomeObject]] updated. That’s
what Object.mixin does. Then [[HomeObject]] (or rather, its prototype) is the
starting point for looking for super-properties.
> Even easier, something like this:
>
> function A() {
> this.test('Hello!');
> }
> A.prototype.test = function (what) {
> alert(what);
> };
>
> function B() {
> this.super();
> }
> B.prototype = poo.inherit(A.prototype);
> B.prototype.constructor = B;
> B.prototype.test = function (what) {
> this.super(what);
> };
>
> poo.superable(B.prototype);
>
> new B;
> // will alert Hello! dong these steps:
> // 1. invokes B.prototype.constructor which
> // 2. invokes A.prototype.constructor which
> // 3. invokes B.prototype.test which
> // 4. invokes A.prototype.test
>
Yes, that will work. But you can’t find `super` via `this` (which changes
dynamically), you must start your search in the prototype of the object in
which a method is stored.
--
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