> 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

Reply via email to