2014-01-17 193 views
7
  1. Web浏览器中的哪个对象是全局对象?
  2. 全局范围是全局对象提供的范围吗? 如果不是,那么发现全球范围在哪里?

回答

5

在浏览器环境中,窗口被认为是全局范围。

该窗口对象实现了窗口接口,这反过来从AbstractView接口继承。
一些附加的全局函数,名称空间对象,接口和构造函数(通常不与该窗口关联,但在其上可用)列在JavaScript Reference和DOM Reference中。

窗口对象表示窗口本身。
窗口的文档属性指向在该窗口中加载的DOM文档。
使用document.defaultView属性可以获得给定文档的窗口。

在标签浏览器,如Firefox,每个选项卡包含它自己的窗口对象(如果你正在写一个扩展,浏览器窗口本身就是一个单独的窗口了。
也就是说,窗口对象不在同一个窗口中的选项卡之间共享,一些方法,即window.resizeTo和window.resizeBy适用于整个窗口,而不适用于窗口对象所属的特定选项卡。一般而言,任何与选项卡无法合理相关的内容都属于窗口代替。

3
  1. 全局对象被称为window
  2. 是,全球SCO pe由窗口提供,所以你可以通过window获得任何全局变量。变量
1

多么美妙的问题。我一直在思考这一段时间。这是我的想法。 是的,它的确有一种叫做全局对象和全局范围的东西。但是,全局范围是虚拟的,并且实际上是全局对象的实时镜像反射(即,全局对象中存在的任何属性作为全局函数/范围中的变量存在)。全局范围的任何更新都是更新全局对象(即,如果创建全局变量,则将其添加到全局范围和全局对象中)。这是一个很酷的事实:如果可以创建或调用全局范围,那么传入它的上下文实际上就是全局对象。

这是硬核证明,没有实际在JavaScript中的函数之外执行的代码。有人认为顶级代码和内联脚本实际上并不是在一个函数内部执行,但这不是真正的原因,因为全局范围必须被创建,全局函数必须被调用,这意味着任何顶级代码都必须运行在那个全局函数里面。