Jason Orendorff (2013-09-24T15:13:23.000Z)
On Tue, Sep 24, 2013 at 7:23 AM, Tom Van Cutsem <tomvc.be at gmail.com> wrote:
> [forking from [[invoke]]-thread for clarity]

Thanks!

> Allen: would the removal of the hasOwn() trap imply that we can drop the
> [[HasOwnProperty]] internal method altogether?

I searched the spec. There are not very many places where
[[HasOwnProperty]] is used; each one can be replaced with a call to an
Abstract Operation defined like this:

----begin spec text----

When the abstract operation HasOwnProperty is called with Object O and
property key P, the following steps are taken:

1. Let desc be the result of calling the [[GetOwnProperty]] internal
method of O with argument P.
2. ReturnIfAbrupt(desc).
3. If desc is undefined, then return false.
4. Return true.

----end spec text----

This allows five or six sections defining [[HasOwnProperty]]
implementations to be deleted. It's a nice simplification.

-j
domenic at domenicdenicola.com (2013-10-01T20:32:41.845Z)
On Tue, Sep 24, 2013 at 7:23 AM, Tom Van Cutsem <tomvc.be at gmail.com> wrote:
> [forking from [[invoke]]-thread for clarity]

Thanks!

> Allen: would the removal of the hasOwn() trap imply that we can drop the
> [[HasOwnProperty]] internal method altogether?

I searched the spec. There are not very many places where
[[HasOwnProperty]] is used; each one can be replaced with a call to an
Abstract Operation defined like this:

> When the abstract operation HasOwnProperty is called with Object O and property key P, the following steps are taken:

> 1. Let desc be the result of calling the [[GetOwnProperty]] internal method of O with argument P.
> 2. ReturnIfAbrupt(desc).
> 3. If desc is undefined, then return false.
> 4. Return true.

This allows five or six sections defining [[HasOwnProperty]]
implementations to be deleted. It's a nice simplification.