On Feb 10, 2012, at 2:29 PM, Brendan Eich wrote: > Allen Wirfs-Brock wrote: >> On Feb 10, 2012, at 11:24 AM, Brendan Eich wrote: >> >>> Hi Tom, this may repeat parts of replies from others, if so please bear >>> with me: >>> >>> I think __proto__ should be a bit magical, and in particular should not be >>> proxy-able. Annex B is becoming "Normative Optional", meaning you are not >>> required to implement its contents to conform to ECMA-262, but if you do >>> support the specified APIs, then Annex B's spec is normative. >> >> A different approach is to tie the semantics to language syntax instead of >> making it part of the "virtual machine" that is defined by the internal >> methods. For example, I could specify the [[Prototype]] mutating behavior >> of an assignment to the __proto__ property as an extension to the evaluation >> semantics of the simple assignment operator (11.13.1). An advantage to >> doing it this way is that it can only be trigger by using that specific >> syntactic form. In particular, other syntactic constructs that in do >> [[Put]]'s and all the [[Put]]'s in built-in and host functions would not >> trigger it. > > Some engines do use syntactic specialization, in particular I recall Rhino > doing that. But do web-facing engines that support __proto__ do that? What do > they do with o['__proto'+'__'] and the like? Anyone know?
The only rules we have in JSC wrt syntactic identification of __proto__ are to prevent people from naming functions __proto__ :D > > >> The approach I took in my proposal for the handling of __proto__ in object >> literals is another example of this syntactic approach. > > That case needs special handling, and the syntax can be specialized there > without loss of generality. Indeed, if we switched to any value on the Object prototype for __proto__ we'd need to special case it in JSC (presumably spider monkey already does) actually JSC already specialises, purely to allow __proto__ to work in literals :D --Oliver _______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

