【问题标题】:trying to understand the difference between window and document objects in js [duplicate]试图了解 js 中窗口和文档对象之间的区别 [重复]
【发布时间】:2013-06-21 02:57:04
【问题描述】:

我试图了解 js 中窗口和文档对象之间的区别。上网查了一下,还是没有很清楚的认识。据我所知:窗口就像一个超级文档,它包含文档对象。那么如果我用firefox打开一个页面:localhost/test.js,能不能说browser:firefox是window对象,文件test.js是document对象?

【问题讨论】:

标签: javascript


【解决方案1】:

window object 代表当前的浏览上下文。它包含 window.location、window.history、window.screen、window.status 或 window.document 之类的东西。此外,它还包含有关框架设置的信息(frames、parent、top、self 属性),并包含重要的接口,例如applicationCache、XMLHttpRequest、setTimeout、escape 、console 或 localStorage。最后但同样重要的是,它充当 JavaScript 的全局作用域,即所有全局变量都是它的属性。

相比之下,(window.)document object 表示当前在window 中加载的 DOM - 它只是其中的一部分。文档包含documentElement(通常为<html>)、forms 集合、cookie 字符串、location 或readyState 等信息。它还实现了一个不同的接口(可能有多个Documents,例如通过ajax 获得的一个XML 文档),方法有getElementById 或addEventListener。

【讨论】:

    【解决方案2】:

    很详细的解释:Read here

    基本上,window 是浏览器的窗口,document 是其中的 HTML 页面。

    【讨论】:

    • 浏览器选项卡中的每个文档是否共享同一个浏览器窗口?如果一个页面可以看到另一个页面全局,这听起来很不安全。许多人说它是开放的,但不知道它是如何开放的。我希望我的问题没有暴露出安全漏洞。
    【解决方案3】:

    在浏览器中运行的 JavaScript 将 Window 作为其顶层。这意味着全局变量将成为窗口的属性:

    // this code is not inside a function
    var global1=22;
    function test(){
      var local=88;
      window.global2=99;
      console.log(local);//logs 88 because
        // local is available within the body
        // of this function
      console.log(global1);//logs 22
    }
    console.log(typeof local);//logs undefined becaue were
      // outside the funciton body
    test();
    console.log(global2);//logs 99 because we added
       // global2 as a property of window
    

    所以 window 将包含你所有的全局对象,这意味着: parseInt 的作用与 window.parseInt 相同。

    Window 甚至包含它自己,所以:

    window===window.window.window;//is true
    

    window 没有 getElementById、children、childNodes ... 函数,因为 window 不是 Html 元素,而 document 是。

    【讨论】:

      【解决方案4】:

      JavaScript 应用程序具有上下文,即定义值的范围。对于浏览器,“根”或“全局”对象是window。

      window 对象有一个名为document 的属性(变量),它存储文档的表示。该文档包含当前加载的文档的模型表示(例如title、anchors 等)。 window 对象表示显示文档的浏览器窗口。

      此外,如果您在一个不在函数中的脚本中定义如下内容:

      var x = 10;
      

      实际上你所做的是在全局对象中定义一个变量。在浏览器的情况下,这将是window。

      所以window.x 的值为 10。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-25
        • 1970-01-01
        • 1970-01-01
        • 2017-07-26
        • 1970-01-01
        • 2011-07-16
        • 1970-01-01
        • 2011-04-07
        相关资源
        最近更新 更多