If you have a prototype chain of objects, |this| will always point to the beginning of the chain (which is also where properties are created whenever you set a property via |this|). This is what allows methods in the prototype to access instance properties.
If there is a method m in any of the objects of the chain and it makes a super-call, you want the search to start in the prototype of m’s object – and not in the prototype of |this| (which is always the second object in the prototype chain). Does that make sense? On Nov 1, 2011, at 18:22 , John J Barton wrote: > On Tue, Nov 1, 2011 at 9:45 AM, Allen Wirfs-Brock <[email protected]> > wrote: >> >> On Nov 1, 2011, at 6:53 AM, Jeremy Ashkenas wrote: > >> The complication of super is that each "super call" requires two independent >> pieces of state in additional to the method arguments: the object that will >> be used as the |this| value of the resulting method invocation and the >> object where property lookup will begin when searching for the method. >> Let's call this the "lookup-point". |super| when used to access a method >> property really represents a pair of values (this,lookup-point). In the >> general case, these are not the same value so they must be independently >> captured and represented. >> Where do these two pieces of state come from? The |this| value of a super >> call is simply the |this| that was dynamically passed into the calling >> method. Where does the look-up point come from. There are fundamentally >> two possibilities: >> a) it is dynamically passed to every method invocation, ;just like |this| >> currently is >> b) it is statically associated with the method in some way. > > I'm just curious and I think understanding the following point would > help developers: > > Why isn't the |super| lookup-point |this.getPrototypeOf()| (The > protolink or [[Prototype]])? I thought that if > let f = new F(); > and F inherits from G, then f.foo() will have this.getPrototypeOf() > === G and that is what super would be? Somewhere I went wrong... > > jjb > _______________________________________________ > es-discuss mailing list > [email protected] > https://mail.mozilla.org/listinfo/es-discuss > -- 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

