[Oh sorry, I'm behind on the iteration-order mega-thread. I'll have to catch up.]
On Mar 14, 2011, at 1:16 PM, David Herman wrote: > Hi David, > > We have a strawman for making the enumeration order well-specified: > > http://wiki.ecmascript.org/doku.php?id=strawman:enumeration > > Would that not be sufficient for the defineProperties case? I'd prefer that > to adding another trap. > > Dave > > On Mar 12, 2011, at 1:15 PM, David Bruant wrote: > >> Hi, >> >> The thread entitled "iteration order for Object" made me realize that there >> is no defineProperties trap. >> >> Let's imagine I'd like to implement an object which would keep track of >> order in which own properties have been added/deleted to it. With the >> defineProperty and delete traps I can already track order of >> addition/deletion and reflect it on the enumerate/keys trap when required. >> >> However, as of ES5, if I do: >> Object.defineProperties(proxy, props) >> then the defineProperty trap is called for each own property of props with >> an order chosen by the ES implementation (it's the same order than the one >> used in for..in which is implementation-dependent). Consequently, I cannot >> guarantee the object user that these keys will be enumerated with the order >> s/he provided them in props. >> >> A defineProperties trap could allow me to throw an error saying roughly "I >> can't garantee my invariant with such a call, please tell me explicitely the >> order you want for your properties by using several Object.defineProperty". >> >> It would obviously be a derived trap. The implementation is quite >> straightforward (based on ES5 Object.defineProperties algorithm 15.2.3.7) >> with one subtility: when retrieving all own enumerable property names of the >> props object, if props is itself a proxy, then the keys trap of this proxy >> would be called. >> >> David >> _______________________________________________ >> 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

