global 是 javascript 运行时所在宿主环境提供的全局对象,是一个 Object。目前来说最常见的宿主环境是浏览器和 nodejs,浏览器暴露了一系列操作 DOM, Location, History 等 Api 供 Js 调用(即 window 对象)而 nodejs 里则没有浏览器里的 DOM 等,可以运行 for (var i in global){console.log(i)} 查看这个全局对象提供的方法,如 process, buffer 这些 nodejs 的资源。
In addition to the properties defined in this specification the global object may have additional host defined properties. This may include a property whose value is the global object itself; for example, in the HTML document object model the window property of the global object is the global object itself.
按照我的理解,大概意思就是global本身包含了一个属性,这个属性的值就是global本身。而在HTML DOM 中,这个属性就是window。 简单来说,在HTML DOM中,window就是global。
在浏览器里,非严格模式下(印象中必须是这个),
global等于window。所以
global对象指的是什么,取决于运行环境。更像是个抽象概念,window就很具体了,就是浏览器的一个web apiglobal是 javascript 运行时所在宿主环境提供的全局对象,是一个 Object。目前来说最常见的宿主环境是浏览器和 nodejs,浏览器暴露了一系列操作 DOM, Location, History 等 Api 供 Js 调用(即 window 对象)而 nodejs 里则没有浏览器里的 DOM 等,可以运行for (var i in global){console.log(i)}查看这个全局对象提供的方法,如process,buffer这些 nodejs 的资源。另外,宿主环境内所有的内建或自定义的变量/函数全局都是
global这个全局对象的属性/方法。刚才又去ECMA官方文档看了一下,文档里是这么说的。
按照我的理解,大概意思就是
global本身包含了一个属性,这个属性的值就是global本身。而在HTML DOM 中,这个属性就是window。简单来说,在HTML DOM中,
window就是global。