Minor type confusion in proxies proposal?

Andreas Rossberg rossberg at google.com
Fri Jul 1 03:12:36 PDT 2011

I believe there is some "type" confusion in the proxy proposal spec
wrt property descriptors and their reification into attributes

1. In a note on the def of [[DefineOwnProperty]] for proxies, the proposal says:

"The Desc argument to this trap is a property descriptor object
validated by ToPropertyDescriptor, except that it also retains any
non-standard attributes present in the original property descriptor
passed to Object.defineProperty. See the semantics of the modified
Object.defineProperty built-in, below."

That seems fishy, since according to ES5 8.10:

"Values of the Property Descriptor type are records composed of named
fields where each field‘s name is an attribute name and its value is a
corresponding attribute value as specified in 8.6.1."

In particular, I take this to mean that property descriptors are not
objects (but abstract records), and that there cannot be any fields
whose name is not an attribute name. (In fact, in V8 we currently
encode property descriptors using objects, but the encoding is
different from the reified attributes object representation, and not
quite compatible with the idea of adding arbitrary other fields.)

2. In the modified definition of Object.defineProperty, the proposal
says in step 4.c:

"Call the [[DefineOwnProperty]] internal method of O with arguments
name, descObj, and true."

This is passing descObj, which in fact is _not_ a descriptor, but its
reification as an attributes object.


More information about the es-discuss mailing list