3.5 全局对象
有一类非常重要的对象,我们不得不现在就把它们讲清楚————全局对象。全局对象(global object)在JavaScript 中有着重要的用途:全局对象的属性是全局定义的符号,JavaScript 程序可以直接使用。当JavaScript 解释器启动时(或者任何 Web 浏览器加载新页面的时候),它将创建一个新的全局对象,并给它一组定义的初始属性:
- 全局属性,比如undefined、Infinity和NaN
- 全局函数,比如isNaN()、parseInt()和eval()
- 构造函数,比如Date()、RegExp()、String()、Object()和Array()
- 全局对象,比如Math和JSON
全局对象的初始属性并不是保留字,但它们应该当做保留字来对待。对于客户端 JavaScript 来讲,Window 对象定义了一些额外的全局属性。
在代码的最顶级————不在任何函数内的 JavaScript 代码————可以使用 JavaScript 关键字 this 来引用全局对象:
var global = this; //定义一个引用全局对象的全局变量
在客户端 JavaScript 中,在其表示的浏览器窗口中的所有 JavaScript 代码中,Window 对象充当了全局对象。这个全局 Window 对象有一个属性 window 引用其自身,它可以代替 this 来引用全局对象。Window 对象定义了核心全局属性,但它也针对 Web 浏览器和客户端 JavaScript 定义了一少部分其他全局属性。
当初次创建的时候,全局对象定义了 JavaScript 中所有的预定义全局值。这个特殊对象同样包含了为程序定义的全局值。如果代码声明了一个全局变量,这个全局变量就是全局对象的一个属性。