Can Activation Object have a [[Prototype]]?

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

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


More information about the es-discuss mailing list