On 1 July 2011 12:12, Andreas Rossberg <[email protected]> wrote: > I believe there is some "type" confusion in the proxy proposal spec > wrt property descriptors and their reification into attributes > objects. > > 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.)
I forgot to say: step 5 of the definition invokes the defineProperty trap of the handler passing Desc as the second argument. But the handler expects a reified attributes object. > 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. > > /Andreas > _______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

