RE: variable declarations shadowing named properties on window

>-----Original Message-----
>From: Cameron McCormack [mailto:cam@mcc.id.au]
>
>Boris Zbarsky:
>> What Gecko actually uses is more like this, I believe:
>>
>> Object.prototype <- [named props obj] <- Window.prototype <- window
>>
>> Note that this does not obviate the need for the no-overriding-builtins
>> stuff, though, because you don't want to shadow Object.prototype on the
>> named props object either...
>
>Yeah.
>
>> So it might be possible to move the named props object to the other spot
>> in the proto chain.


I'm getting a little confused with the proposed changes here. GSP is not part of the prototype chain, it's a special proxy behavior.


>Even though there's only one instance of Window that inherits from a
>given Window.prototype, it makes slightly more sense to me to have the
>instance-specific named properties object closer to the instance, before
>inheriting from Window.prototype.
>
>I think we can just trigger this "add an extra object in the proto
>chain" based on [ReplaceableNamedProperties], so no changes to HTML's
>IDL would be needed.

Are you thinking about this: ?

Object.prototype <- Window.prototype <- [named props obj] <- window

...will break the web if that is truly the scope lookup. GSP needs to happen _last_ in the scope resolution for window. For example, the HTML5 spec itself has some <span id="document"> which would then shadow the actual document getter on Window.prototype.

In general, I'm against adding an observable object in the prototype chain for this behavior--I think the behavior should be associated with the instance.

Received on Thursday, 5 January 2012 18:40:41 UTC