Improving Function.prototype.bind

David Bruant bruant.d at gmail.com
Thu Jan 5 14:01:34 PST 2012


Hi Andrea,

It seems that what you want can be implemented as a library [1]
(actually you did it as well in your blog post). In this gist, a cache
is used. In a nutshell, it is a '(function, object) -> boundFunction'
mapping. I used 2 levels of WeakMaps to achieve this.

I don't think a native implementation could be that much more efficient
neither in space nor time.

Assuming my implementation does what you need, what would be the benefit
of a native implementation over what I propose?

David

[1] https://gist.github.com/1567494


Le 05/01/2012 14:54, Andrea Giammarchi a écrit :
> I have thought it may be interesting to receive some comment here too
> ... so here the short summary:
>
> genericCallback.bind(sameObject) !== genericCallback.bind(sameObject)
>
> quite inconvenient for listeners and leading to uncomfortable patterns
> ( store the bound reference somewhere and get it back later )
>
> plus bind, at the end of a function, where the topic is the context,
> looks more like a yoda statement
>
> "function with context as this object"
>
> rather than
>
> "object as context of this function"
>
> So, the proposal, is a simplified Object.prototype.boundTo ( or
> eventually, to avoid conflicts with bind signature
> Object.prototype.asContextOf )
> where the action is object, as context, related, and the returned
> function is one and one only
>
> sameObject.boundTo(genericCallback)
> === sameObject.boundTo(genericCallback)
>
> or, if you prefer
>
> sameObject.asContextOf(genericCallback)
> === sameObject.asContextOf(genericCallback)
>
> Here the whole post with better examples plus the proposed solution
> that would be nice to have in JS.Next
> http://webreflection.blogspot.com/2012/01/improving-functionprototypebind.html
>
> Best Regards,
>     Andrea Giammarchi
>
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20120105/ab5d0e90/attachment.html>


More information about the es-discuss mailing list