« Return to Thread: The global object in browsers

Re: The global object in browsers

by Brendan Eich-3 :: Rate this Message:

Reply to Author | View in Thread

On Feb 17, 2009, at 2:48 PM, Mark Miller wrote:

On Tue, Feb 17, 2009 at 2:02 PM, Ian Hickson <ian@...> wrote:
Now, if the other page's script calls f() and g(), it will get different
results (2 and 1 respectively, if I didn't screw up the example code).

For HTML5, this behaviour has been defined in more detail. The global
object is a Window object. This object is per-Document. The object
returned by the "window" attribute on that global object is actually a
WindowProxy object, which forwards everything to the "current" Window
object.

What do you mean by "current"? Are you proposing to legitimize the dynamic scoping behavior demonstrated by your example?

What Ian showed is not dynamic scoping.

  var global = this;
  function g() { return global.x; }

The issue is what global.x means after the current page (the one containing the script including these two lines) has been unloaded and a new page loaded (while some other window keeps a reference to g).


If all major browsers agree on this bizarre behavior, we will indeed be stuck. But if some existing browsers use lexical capture (i.e., return 1 in both cases), then ES-Harmony should feel free to specify that. What do each of the major browsers do?

What the proxy forwards to, the current inner window or the one associated with function g (associated how?) when the expression global.x is evaluated, is the *current* inner window for the outer (persistent, === identity) proxy denoted by global in the example.

The identity of the inner window, the one at the tail (top is confusing, which way is up?) of the scope chain in ECMA-262 terms, must not leak or it could be used to subvert access checks done by the proxy.

/be



--
Text by me above is hereby placed in the public domain

   Cheers,
   --MarkM

_______________________________________________
Es-discuss mailing list
Es-discuss@...
https://mail.mozilla.org/listinfo/es-discuss


_______________________________________________
Es-discuss mailing list
Es-discuss@...
https://mail.mozilla.org/listinfo/es-discuss

 « Return to Thread: The global object in browsers