Arrow binding

Russell Leggett 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
> 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.

- Russ
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20120423/3eda537f/attachment.html>


More information about the es-discuss mailing list