just to add some extra info to this discussion, lo-dash does some crazy thing to optimize at its best bound functions.
`/\bthis\b/.test(Function.prototype.toString.call(callback))` or something similar to check if the function needs to use call/apply at all, together with the number of arguments, and some other analysis to optimize all further calls to the bound function. While I believe that's a bit extreme, I have to admit performance gain is huge so maybe some trick used in lo-dash could be used internally too ? Like different specialized bound version? Most common use case is still a method bound to the object itself in order to don't loose the context on some event call. my 2 cents On Fri, Jul 12, 2013 at 4:04 PM, Matthew Robb <[email protected]>wrote: > If a function proxy is just forwarding an operation through an > intermediary (the proxy and it's call trap) to another function it sounds > very similar to a regularly wrapped/bound js function. So what I am saying > is if browsers implemented bind using a proxy instead of the special native > functions it would be theoretically faster. > > > On Fri, Jul 12, 2013 at 2:54 PM, Allen Wirfs-Brock > <[email protected]>wrote: > >> >> On Jul 12, 2013, at 1:55 PM, Matthew Robb wrote: >> >> > In the future wouldn't using a Function Proxy be potentially much >> faster? >> >> It seems highly unlikely that any use of Proxy will be faster than a >> rough equivalent using an ordinary object. >> >> I expect proxies to be much harder for implementations to optimized than >> ordinary objects. >> >> Looking at it another way, if implementation haven't found it >> straightforward to optimize ES5 bound functions why would you expect that >> would have an easier time with Proxys? >> >> Allen >> >> >> > > > -- > - Matthew Robb > > _______________________________________________ > es-discuss mailing list > [email protected] > https://mail.mozilla.org/listinfo/es-discuss > >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

