Last call: Function
brendan at mozilla.org
Thu Mar 20 21:52:12 PDT 2008
On Mar 20, 2008, at 9:46 PM, Brendan Eich wrote:
> Per ECMA-262 Edition 3 10.2.3, function objects already must capture
> their scope chains including the global object terminating the chain.
> In browsers, each window (tab), frame in frameset, and iframe has a
> global object. Cross-frame calls uphold static scope by following
> their [[Scope]] internal property's value to find the right globals,
> the ones lexically closed when the function and its surrounding code
> were loaded via a <script> tag.
I should have added that optimizing implementations that close
bindings instead of activation objects still have a problem deciding
what bindings are global if the function uses outer names that are
not DontDelete (var or equivalent) bindings in outer activations. If
the function uses no outer names, then it need not entrain outer
scopes at all, and you're right that the only requirement for
[[Scope]], not explicit in ES3 with its lame talk of only one "global
object", comes from apply/call as specified.
More information about the Es4-discuss