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

Reply via email to