On Jul 1, 2011, at 11:37 AM, Andreas Gal wrote:

> In our implementation we are using a generic object. It has some overhead, 
> and a specific internal "descriptor object" representation might be a bit 
> faster, but such magic objects that don't allow expando properties are 
> usually pretty surprising to programers. Most of the HTML5 DOM allows 
> arbitrary expando properties. I think we should stick to that theme.

IIRC Tom and Mark's http://traitsjs.org/ work relies on being able to extend 
property descriptors with .required and other ad-hoc ("expando") properties. 
This is important: it allows developers to blaze trails and tread paths that we 
later pave with standards.

/be

> 
> Andreas
> 
> On Jul 1, 2011, at 5:54 AM, Andreas Rossberg wrote:
> 
>> 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
> 
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss

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

Reply via email to