>>> 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

Reply via email to