Le 02/11/2012 16:39, Allen Wirfs-Brock a écrit :
> So, yes, in that case Object.getOwnPropertyDescriptor and
> Object.defineProperty need to pass through object level descriptors
> from/to the corresponding proxy traps which means they can't normalize
> via a property descriptor record.  So, it is perfectly appropriate for
> them to explicitly test if O is a proxy and act accordingly.   I
> think, this should be the only place where an explicit Proxy test is
> required outside of the actual proxy object specification algorithms.
For some time after this sentence I wondered what justified
Object.getOwnPropertyDescriptor and Object.defineProperty to have
special-casing for proxies.
The reason is that proxies have an additional ability that regular
objects don't: accepting custom attributes. More specifically, proxies
are expected to be able to regurgitate custom attributes on
Object.getOwnPropertyDescriptor after they've been set with
Object.defineProperty.

Then, I wondered why it matters that only proxies can do it. The reason
is future-proofing. If a property descriptor record accepts any key and
value besides the standards ones, then it may become impossible to
extend property descriptor records in the future by assigning semantics
to currently-unused field names.

Keeping property descriptor records as tightly defined is for the best
for the future.

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

Reply via email to