On Tue, Sep 10, 2013 at 7:45 PM, Jason Orendorff
<jason.orendo...@gmail.com>wrote:

> On Tue, Sep 10, 2013 at 11:11 AM, Allen Wirfs-Brock
> <al...@wirfs-brock.com> wrote:
> > Having to create a new bound function on every method call seems too
> expensive.
>
> Only for proxy method calls, and it's easily optimized away in the
> default case (i.e. there is no .getMethod handler method).
>
> (As an aside, exchanges like the above have gotten so frequent they
> are beginning to feel a bit pro forma. I don't mean to sweep all
> performance concerns into one pile here.)
>
> >  But what about:
> >
> >  6. Let method = O.[[Get]](P).
> >  7. ReturnIfAbrupt(method).
> >  8. If IsCallable(method) is false, throw a TypeError.
> >  9. Return O.[[InvokeFunction]](method,O, args).
> >
> > Using [[InvokeFunction]] the Proxy still mediates the [[Call]] to method
> but it is assume the [[Get]] step has already been performed and has
> produced method.
>
> This is appealing. There are a few things [[GetMethod]] can do that
> this can't: [[InvokeFunction]] can't be used to make a proxy that
> mimics the behavior of __noSuchMethod__, for example. I don't think it
> can mimic ActionScript 3 Proxy.callMethod either.
>
> If [[InvokeFunction]] is deemed powerful enough, I'm all for it.


Wasn't a major point in favor of having an [[Invoke]] trap that it wouldn't
require returning a function from the trap at all? We'd lose this quality
with both of these proposals.
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to