On Apr 23, 2012, at 3:30 PM, Russell Leggett wrote:

> 
> > That is only true for functions that actually use |this|. Even though bind
> > is probably not used in force yet because of cross-browser worries, "var
> > self = this" is used everywhere. Functions using that pattern are no more
> > usable with call/apply than arrow functions.
> 
> "everywhere" is incredibly strong wording, and I think that in the
> large, you're probably not correct. Some large % of code might
> manually "call their scope" through closure binding, but even that
> isn't an argument against soft binding.
> 
> Let me reword from "everywhere" to "extremely common". My point was that even 
> though it is not used in every case, it is used often enough that |this| 
> cannot be relied on. And my other point was that you have to know how the 
> function passed in *uses* this, which makes it pretty tightly coupled.
>  
> > Last I checked, the new method form is still a dynamic binding - otherwise
> > it wouldn't work. So really, you're just talking about arrow functions. In
> > the cases where arrow functions make the most sense (callbacks) you rarely
> > want a dynamic |this| - the oddball case being event handlers primarily.
> 
> Having done this dance a couple of times, let me suggest to you that
> the method form will *eventually* end up at a per-class getter on the
> prototype which vends an instance function which is bound. People will
> (reasonably) want binding of some sort.
> 
> If that happens, then I will be more inclined to agree with you. Until that 
> happens, I guess I just don't. Your argument seems balanced on something 
> which you think will happen. I find that hard to agree with.
> 
>  
> > I really just don't see the value of changing the |this| value of a function
> > created for the purpose of being an argument to a function. And frankly, I
> > just don't see many other use cases for arrows. Maybe thats the part I'm
> > missing.
> 
> Yeah, I think you're missing the composition arguments. If I create
> mixins with methods, they're going to have a promiscuious "this" as a
> *feature*. You might not write code like this today, but you probably
> should ;-)
> 
> I use mixins all the time, I just don't see them being being declared with 
> arrow functions, which was the point I was trying to make here. If you are 
> creating a mixin, then you would most likely want to use the new method 
> syntax or at least the function syntax, but I think it would be silly to use 
> the arrow function syntax, so I guess I'm just not sympathetic to that.

If methods on classes sprout binding of some sort, this will be the natural 
style. And I think that's a good place to be. If both arrow and class methods 
lexically soft-bind, truly unbound functions will be declared as "function" and 
will be easy to spot.
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to