On Mon, Dec 28, 2009 at 9:29 PM, Brendan Eich <[email protected]> wrote: > On Dec 28, 2009, at 8:48 PM, Garrett Smith wrote: > >> Can Activation Object have Object.prototype for [[Prototype]]? > > Absolutely not, for the reason you illustrate with the toString example. > > >> The only implmeentation I know of that does this is Blackberry9000. I >> called it a bug, but now I am not sure. Is this behavior disallowed by >> the specification? If so, where? > > An Activation object is an internal (abstract, only for the spec, not > detectable in the language) object. If you could detect its presence, e.g. > by its having a [[Prototype]] internal property with non-null value, then > the implementation would not conform. See ES3 10.1.6: > > "The activation object is purely a specification mechanism. It is impossible > for an ECMAScript program to access the activation object. It can access > members of the activation object, but not the activation object itself. When > the call operation is applied to a Reference value whose base object is an > activation object, null is used as the this value of the call." >
That says that a program cannot access the activation object. It does not say that activation object cannot have a [[Prototype]]. > ES5's Clause 10 eliminates all mention of "activation objects" and avoids > abusing objects for internal (spec-only) data types. > Thanks. I remember reading about "Lexical Environment" but did not see a provision expressly prohibiting a "Lexical Environment" from being implemented as a native object. Its crazy to do that, but there it is in Blackberry9000. If you're an admirer of bugs, you've got to love that one. Garrett _______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

