The global object in browsers

Ian Hickson ian at
Mon Jul 6 14:52:23 PDT 2009

On Mon, 6 Jul 2009, Brendan Eich wrote:
> If we must have split windows in all top browser implementations (so the 
> argument goes), then we must have them in a spec. If not ECMA-262, then 
> HTML5. If split windows, then what |this| binds to (outer or inner) 
> needs to be spec'ed. So here we are. Comments?

Your e-mail is in line with my understanding.

In HTML5, the "inner window" is the Window object and the "outer window" 
is the WindowProxy object. With one minor exception to do with 
about:blank, there's a 1:1 mapping from Document to Window, and a 1:1 
mapping from WindowProxy to browsing context. Each browsing context can 
have many Window/Document pairs.

For what it's worth, right now HTML5 says:

   If the script's global object is a Window object, then in JavaScript, 
   the |this| keyword in the global scope must return the Window object's 
   WindowProxy object.

   This is a willful violation of the JavaScript specification current at 
   the time of writing (ECMAScript edition 3). The JavaScript 
   specification requires that the this keyword in the global scope return 
   the global object, but this is not compatible with the security design 
   prevalent in implementations as specified herein. [ECMA262]

I'd love to be able to include this requirement without it being a 
violation of another spec.

Ian Hickson               U+1047E                )\._.,--....,'``.    fL       U+263A                /,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'

More information about the es-discuss mailing list