Type of property names, as seen by proxy traps

Andreas Rossberg rossberg at google.com
Thu Jul 7 05:29:32 PDT 2011


On 7 July 2011 13:11, Tom Van Cutsem <tomvc.be at gmail.com> wrote:
> 2011/7/6 Andreas Rossberg <rossberg at google.com>
>>
>> While putting together some test cases for Object.keys, I wondered: is
>> it intended that property names are always passed to traps as strings?
>
> That is indeed the intent.
>
>>
>> It seems like a reasonable assumption, but is not currently the case
>> everywhere (e.g. the default implementation for `keys' can violate
>> this assumption when passing names to this.getOwnPropertyDescriptor).
>
> How so? The default implementation for the keys trap relies on the return
> value of the getOwnPropertyNames() trap, whose return value is coerced to an
> array of Strings.

Not quite. The coercion is taking place in Object.getOwnPropertyNames,
but the default `keys' trap doesn't go through that, but instead calls
the trap directly. Moreover, it has to do it like that, because it
doesn't even have a reference to the proxy itself.

/Andreas


More information about the es-discuss mailing list