>>> Got it. I’m assuming that’s a performance issue? >> >> You could say that. If we inherit by default but it's a "soft binding", then >> the inner function has to carry that reference with it, but in a way that >> can be overridden. >> >> We talked about lexical this for functions long ago (Jan. 2008? at Google >> anyway) and IIRC Mark found a subtler flaw. > > But again, it's a runtime incompatible change, even ignoring performance. > Code today may count on this == global in non-strict mode, or this === > undefined in strict mode, for inner functions not called as methods. > > Making such a runtime-incompatible change uses up one of my "five fingers of > fate" and it's not to be done lightly.
Agreed. The global object assumption is too prevalent in non-strict mode, so that one is out. Strict mode *might* still be OK. In any case, if we have both block lambdas and shorter method syntax (*) then everyone will automatically do the right thing in practically all cases. That would be really cool. (*) I recently heard a story of someone being surprised by seeing the word “function” in object literals – “Isn’t that supposed to be a method? Why is it called a function, then?” -- Dr. Axel Rauschmayer a...@rauschma.de home: rauschma.de twitter: twitter.com/rauschma blog: 2ality.com
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss