Can Activation Object have a [[Prototype]]?

Garrett Smith dhtmlkitchen at gmail.com
Mon Dec 28 22:43:06 PST 2009


On Mon, Dec 28, 2009 at 9:29 PM, Brendan Eich <brendan at mozilla.com> 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


More information about the es-discuss mailing list