function() {}.bind(this) -> this.function(){} ?

Mark S. Miller erights at google.com
Thu Dec 29 17:11:54 PST 2011


Hi John,

Your particular syntactic choice looks clever, but as is often the case, it
fails because of semicolon insertion. The following works today on any ES5
system:

> function foo() { > return this.function() > { > console.log('oops'); > };
> }
> foo.call({function: function(){return 'gotcha';}});
gotcha


On Thu, Dec 29, 2011 at 10:54 AM, John J Barton <johnjbarton at johnjbarton.com
> wrote:

> Sorry if this has been suggested before....
>
> I've stopped using the 'self=this' trick:
>    ...
>    var self = this;
>    window.addEventListener('load', function(event) {
>      self.foo();
>    }, false);
>
> in favor of bind():
>    ...
>    window.addEventListener('load', function(event) {
>      this.foo();
>    }.bind(this), false);
>
> It's fine, but I wonder if such code would be clearer if we could write:
>    ...
>    window.addEventListener('load', this.function(event) {
>      this.foo();
>    }, false);
>
> To me at least this more closely expresses my intent: I want an anonymous
> method of 'this' object, not an anonymous function.
>
> jjb
>
>
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
>


-- 
    Cheers,
    --MarkM
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20111229/9b6681c3/attachment.html>


More information about the es-discuss mailing list