ECMAScript虽然没有指出如何直接访问Global对象,但web浏览器都是将这个全局对象作为window对象的一部分加以实现的。因此,在全局作用域中声明的所有变量和函数,就都成为了window对象的属性。例如:
var color = "red"; function sayColor() { alert(window.color); } window.sayColor();//red
这里定义了一个名为color的全局变量和一个名为sayColor()的全局函数。在sayColor()内部,我们通过window.color来访问color变量,以说明全局变量是window对象的属性。然后,又使用window.sayColor()来直接通过window对象调用这个函数,结果显示在了警告框中。
注:JavaScript中的window对象处了扮演ECMAScript规定的Global对象的角色外,还承担了很多别的任务。
另一种取得Global对象的方法是使用一下代码:
var gloabl=function() { return this; }();
以上代码创建了一个立即调用的函数表达式,返回this的值。如前所述,在没有给函数明确指定this值的情况下(无论是通过将函数添加为对象的方法,还是通过调用call()或apply()),this值等于Global对象。而像这样通过简单的返回this来取得Global对象,在任何执行环境下都是可行的。