[[Invoke]] and implicit method calls

Allen Wirfs-Brock allen at wirfs-brock.com
Mon Sep 23 18:40:10 PDT 2013

On Sep 23, 2013, at 6:32 PM, Allen Wirfs-Brock wrote:

> On Sep 23, 2013, at 6:14 PM, Kevin Smith wrote:
>> Hi Allen,
>> Your line of thinking has convinced me that `invoke` as it currently stands doesn't really fly.  However, I have an issue with your proposal.  Take this fragment:
>>    (1) function f() { doSomethingWith(this); }
>>    (2) f.call(obj);
>> Presently, the expression at (2) grants the function `f` access to `obj`.  If I understand correctly, under your proposal the expression at (2), in the case where `obj` is a proxy, additionally grants `obj` access to `f`.  Is that right?
> In the case where obj is a Proxy f.call(obj) would give f's handler access to f.

If you wanted to make the call in a way that did not reveal the function to the handler you would code step 2 as:
    Reflect.apply(f, obj, [ ]);

That directly calls [[Call]] on f without going through the proxy


More information about the es-discuss mailing list