gpt4 book ai didi

javascript - 使用文档对象时是否假定 window.document ?

转载 作者:行者123 更新时间:2023-12-03 12:17:24 25 4
gpt4 key购买 nike

查看有关 the window object 的 w3schools JavaScript 引用,文档对象似乎是它的一个属性。尽管我们知道,文档对象不需要任何显式的 window.document,而只需要 document。检查它们是否不同后,我使用了这段代码:

<script type="text/javascript">
window.onload = function()
{
alert("Using window.document: " + window.document.images.length);
alert("Using document: " + document.images.length);
};
</script>
<img id="1" src="/images/some_pic.gif" />
<img id="2" src="/images/some_other_pic.gif" />

...显示两种方法都打印出 2 (文档中的图像数量)。这让我对一些我在其他地方找不到答案的事情感到好奇:

  1. 一种方法比另一种更好吗?尽管我一直在使用 document,但我发现 window.document 更符合逻辑。除此之外,使用其中一种或另一种还会有其他好处吗?
  2. 假设它们是同一件事,这种类型的“语法”(而成员可以立即作为快捷方式引用)是否被称为某种东西?能否以某种方式从逻辑上解释它(例如 document 是对 window.document 的引用吗?
  3. 这些类型的事物在该语言的其他地方见过吗?或者它只适用于文档对象?

最佳答案

作为属性附加到 window 的任何内容都可以在没有 window. 前面的情况下进行访问。每个 JavaScript 环境都有一个“全局命名空间”。 window 是浏览器中的全局命名空间。如果您在 node.js 中编写 JavaScript,那么名为 global 的对象就是全局命名空间。

如果您声明的变量没有 var 关键字,则该变量将变为“全局”。也许您已经知道这一点,但您可能不知道的是您的变量实际上成为了 window 的属性。

function doSomething() {
var inScope = "I am only accessible within the doSomething function.";
notInScope = "I am a global variable which means you can access me at window.notInScope.";
}

此外,即使您确实使用 var 但它没有包含在任何会限制其范围的内容中,那么它也会成为全局变量。

<script type="text/javascript">
var isGlobal = "This variable is global even though we used 'var' because it was declared in the root/global scope.";
</script>

http://plnkr.co/edit/a5fanTIJRpxxjjqgrr4D?p=info

关于javascript - 使用文档对象时是否假定 window.document ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24619764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com