【问题标题】:Why can we access window.document property without specifying window object?为什么我们可以在不指定 window 对象的情况下访问 window.document 属性?
【发布时间】:2018-05-10 22:20:49
【问题描述】:

作为一个 JavaScript 新手,我看到了很多书上没有解释的魔法。比如为什么我会写

document.getElementById('one');

documentwindow 的属性时?根据我在书中读到的,我们需要写

window.document.getElementById('one');

如果文档是常规对象,就像我们自己创建的任何对象一样。


什么允许我们在使用 document 属性时省略 window 父对象?

我用谷歌搜索了这个,但找不到解释。

【问题讨论】:

    标签: javascript


    【解决方案1】:

    window 是浏览器中的全局对象,because of the way scope works in JavaScript,全局对象将始终是搜索某物的最后一个位置。因此,省略 window 是可以的,因为它最终会在“作用域链”的末尾找到。

    documentwindow 的一个属性,因此,您不需要使用window 对其进行限定,因为当浏览器到达window 时仍然没有找到它是什么寻找,它会查看window的属性,并在那里找到document

    【讨论】:

    • 信息不足。 documentwindow 的属性,但如果 windowundefined 或变为 undefined(就像 webpack),我们就不能使用它。在这种情况下,我们想提及this
    • @BehindTheScene 我认为这些都与这个问题没有直接关系。这是切线的。
    【解决方案2】:

    window 代表浏览器的窗口。 所有全局 JavaScript 对象、函数和变量都会自动成为窗口对象的成员。

    document 也是全局对象的属性,因此可以作为window.documentdocument 访问。

    更多信息可以参考here.

    【讨论】:

    • 所有全局 JavaScript 对象、函数和变量都自动成为窗口对象的成员。 这根本不是真的。 JavaScript 对象是 JavaScript 运行时“本机”或“内置”的。它们不是 BOM 的一部分。而document 不是 也是一个全球性的。它是全局属性。
    猜你喜欢
    • 2011-02-06
    • 2016-08-16
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 2013-05-10
    • 1970-01-01
    • 2014-07-05
    • 2013-05-28
    相关资源
    最近更新 更多