JavaScript全局对象和全局范围

时间:2014-01-17 11:40:46

标签: javascript browser

  1. Web浏览器中的哪个对象是全局对象?
  2. 全局范围是全局对象提供的范围吗? 如果没有,那么全局范围在哪里?

3 个答案:

答案 0 :(得分:5)

在浏览器环境中,Window被视为全局范围。

窗口对象实现Window接口,该接口继承自AbstractView接口 JavaScript参考和DOM参考中列出了一些额外的全局函数,名称空间对象,接口和构造函数,通常与窗口无关,但在其上可用。

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

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

答案 1 :(得分:3)

  1. 全局对象称为window
  2. 是的,全局范围由window提供,因此你可以使用window.varible
  3. 获取任何全局变量

答案 2 :(得分:1)

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

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