Improving Function.prototype.bind

Andrea Giammarchi andrea.giammarchi at gmail.com
Thu Jan 5 14:10:05 PST 2012


leaks, performances, as example, are the first things I have in mind when I
look at that code ( assuming I understand how WeakMap works there )

Function.prototype.bind could have been implemented via libraries ( as
Prototype did ) as well so I don't get your argument, sorry.

My point is that Function.prototype.bind is used 90% of the time with
context only, 10% with arguments, 0% as different object since nobody uses
two bound functions to the same object, arguments a part.

I am suggesting a semantic improvement Object related but of course I can
solve all missing real-nedeed things via a library ... you know what I mean?

Regards

On Thu, Jan 5, 2012 at 11:01 PM, David Bruant <bruant.d at gmail.com> wrote:

>  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 listes-discuss at mozilla.orghttps://mail.mozilla.org/listinfo/es-discuss
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20120105/eea52799/attachment-0001.html>


More information about the es-discuss mailing list