On Sep 20, 2013, at 5:31 PM, Brendan Eich wrote:

> Allen Wirfs-Brock wrote:
>> The main reason I'm still supportive of [[Invoke]] (possibly with the option 
>> of passing a function instead of a property key) is because it allows (and 
>> that I think you pointed out) a proxy to implements some or all of its 
>> methods directly in its 'invoke" trap rather than as discrete functions.
> 
> Only if the client code doesn't extract a method as a funarg. There's no way 
> around get and invoke having to be consistent.
> 
> JS has first class functions, methods are not second class, so invoke cannot 
> relieve a proxy from reifying methods from get.
> 
> Given this, having the legacy internal calls continue to use get+call seems 
> fine to me. A proxy implementing toString, e.g., can make it work using these 
> traps just as well as via get+invoke, and without double lookup or 
> boolean-trap-smelling (id | func) parameterization of invoke.

In that case,  why not just use [[Get]]+[[InvokeFunction]] in all cases 
(including obj.m(()) and not have the current [[Invoke]] at all.  It allows the 
proxy handler to correctly intercede on all method invocations including 
conditional cones. 

Slogan:  [[InvokeFunctiction]] is the new [[Call]].

(except that [[Call]] still needs to exist as an implementation mechanism and 
if we eliminate the current [[Invoke]] I would repurpose that name for what I'm 
currently calling [[InvokeFunction]])

Allen



_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to