Re: "var" declarations shadowing properties from Window.prototype

Boris Zbarsky wrote:
> On 8/11/12 10:42 PM, Brendan Eich wrote:
>> However, implementations (at least Gecko) give window a proto chain that
>> is "interesting":
>
> Indeed.  For one thing, we haven't switched Window to the new bindings 
> yet.

Could you lay out the new chain here, e.g. 
viaObject.prototype.toString.call(window.__proto__).slice(8,-1) or better?

I'm hoping my Web Console inspection was accurate for DOM content 
windows in the current (old) bindings.

>> This is from a stable-release Firefox Web Console. I believe it matches
>> a real DOM content window. I don't see EventTarget
>
> Because it's not on the proto chain at all; in Gecko as of today 
> Window doesn't inherit from EventTarget; instead "Window implements 
> EventTarget", effectively.  Again, we just haven't switched Window to 
> WebIDL yet.

Sure. Still, either way (old or new bindings), the EventTarget 
attributes and operations go on a prototype (old: Window.prototype, new: 
EventTarget.prototype, please correct me if I'm wrong). Which makes for 
the var+obj-detection hazard.

> The Global Scope Polluter you see there, though, is in fact defined in 
> WebIDL.

Cool, I guess. Standardized pollution, what a world!

>> But the exact chain is not something that should be
>> standardized in detail.
>
> Why not?

Good question. If browser vendors can agree on total window proto-chain 
spec for maximum interop, ok. I had thought there were unobservable 
(prior to ES5) differences among impls that vendors might not want to 
change. ES5 reflection may disclose these but not create real interop 
issues.

/be

Received on Sunday, 12 August 2012 17:59:55 UTC