Is this-propagation as written useful?

Brendan Eich brendan at mozilla.com
Sun Dec 2 11:16:27 PST 2007


On Dec 2, 2007, at 3:07 AM, liorean wrote:

> I suspect doing that might be a security problem
> however, besides potentially breaking live scripts.

That's right, it's not backward compatible, so it's out. Changing  
runtime semantics for existing syntax under type=application/ 
ecmascript;version=4 just makes migration hazards of the "it seems to  
work, but next week we have a fire-drill due to a case that our tests  
didn't cover" kind.

> or simply a binding function:
>    setTimeout(this.fn.bind(this), delay);

Function.prototype.bind/Function.bind is proposed:

http://wiki.ecmascript.org/doku.php?id=proposals:static_generics

and it does what's wanted. Apart from extra bells and whistles that  
Ajax libraries add in their bind methods, it's sufficient for the  
case you cite, has the standard form and fit, and could be used as  
the more efficient basis for the elaborated bind methods in the  
popular libraries.

> ES4's this-propagation at this moment seems to be extremely limited in
> use, and specifically tailored to avoid the use cases where
> this-propagation is most desired, judging from real-world problems.

It seems to me your message contradicts itself. You start off asking  
for an incompatible change, eventually advert to the difficulties in  
making it, propose alternative syntax or methods, and finish by  
denigrating the use cases for the |this| propagation proposal. Doing  
so does not help make the case for an incompatible change, and only  
hurts those other use-cases for no clear reason.

First among the use-cases addressed by the |this| proposal is the  
nested helper functions case, which is used in the reference  
implementation IIRC. This is worth fixing.

/be




More information about the Es4-discuss mailing list