russell.leggett at gmail.com
Mon Apr 23 07:30:57 PDT 2012
> > That is only true for functions that actually use |this|. Even though
> > 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
> > Last I checked, the new method form is still a dynamic binding -
> > it wouldn't work. So really, you're just talking about arrow functions.
> > the cases where arrow functions make the most sense (callbacks) you
> > 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
> > created for the purpose of being an argument to a function. And frankly,
> > 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.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the es-discuss