[[Invoke]] and implicit method calls

Waldemar Horwat waldemar at google.com
Wed Sep 11 18:30:05 PDT 2013

On 09/11/2013 03:38 PM, Jason Orendorff wrote:
> On Wed, Sep 11, 2013 at 9:08 AM, Tom Van Cutsem <tomvc.be at gmail.com> wrote:
>> Currently the pattern for this is [[Get]]+[[Call]]. We cannot refactor to
>> [[Has]] + [[Invoke]] in general, because [[Has]] will return true also for
>> non-callable values.
>> If we believe these are call-sites where it is worth avoiding the allocation
>> of a function, then having an additional internal method like [[GetMethod]]
>> or [[InvokeConditional]] makes sense, but I doubt it's worth the added
>> complexity.
> But as Allen said, [[Invoke]] is not a performance hack. It's a
> correctness hack.
> It permits proxies to customize their behavior around `this`, and even
> naive .invoke trap users would definitely want those customizations to
> apply for implicit .toString() and .then().

Except that [[Invoke]] doesn't solve the correctness problem either.  As we discussed at a prior meeting, it fails in the case of passing 'this' as one of the arguments.


More information about the es-discuss mailing list