【问题标题】:mozilla's term "Global Objects" confused meMozilla的术语“全局对象”让我感到困惑
【发布时间】:2011-04-28 00:07:55
【问题描述】:

几个朋友建议我阅读developer.mozilla.org/en/JavaScript/Reference/Global_Objects

此处的术语“全局对象”[1] 不应与 全局对象[2] 混淆。这里,全局对象[3] 指的是全局范围内的对象。全局对象[4] 本身可以通过全局范围内的this 访问。事实上,全局范围全局对象的属性[5](包括继承的属性,如果有的话)组成。

老实说,我完全被上面的话弄糊涂了。第一句话告诉我not to be confused,但它确实让我感到困惑。好吧,英语不是我的母语,也许这就是原因。 global object(s)出现5次,global scope出现3次!

global object[4,5] 是指global objects[1] 还是global object[2]?

【问题讨论】:

    标签: javascript terminology mozilla


    【解决方案1】:

    简答: 45 等价于 2

    长答案:“全局对象”是 JavaScript 的一种语言结构,可以使用代码中的 globalwindow 变量进行访问。此对象包含以某种方式定义的所有内容

    “全局对象”是指在 JavaScript 环境的主要范围内定义的所有对象。主范围(或“全局范围”)是指“全局对象”的直接子级(属性)。

    如果我在 JavaScript 中在任何函数之外定义变量 myVariable,则此变量位于“全局范围”内,即可以使用 global.myVariable(或 window.myVariable)访问,其中 global 是对“全局对象”。

    我建议看看 JavaScript 的函数作用域是如何工作的:https://developer.mozilla.org/en/JavaScript/Reference/Functions_and_function_scope

    【讨论】:

    • this 与作用域无关。
    • @Tim Down:对。相应地编辑了我的帖子。
    【解决方案2】:

    全局对象是主要对象。把它想象成上帝。像上帝一样,只有一个全局对象。在浏览器内部,window 标识符引用它。

    全局对象是所有属于上帝属性的对象(全局对象)。浏览器内置了很多全局对象,如locationdocumentXMLHttpRequestalert方法等。

    您可以通过以下方式创建其他全局对象:

    • 声明全局(非原始)变量(在全局执行上下文中声明变量)
    • 声明全局函数(在全局执行上下文中声明函数)

    最好将全局对象称为“全局变量”、“全局函数”、“全局成员”、“全局属性”等,以免与全局对象混淆。

    【讨论】:

      【解决方案3】:

      Mozilla 的措辞没有帮助。我建议你忽略它。

      有一个全局对象。这是ECMAScript language specification 中定义明确的构造。它有几个目的,其中最重要的是全局对象的属性随处可用。这就是 Mozilla 所说的“全局对象”的意思;它们被称为“全局对象的属性”更准确、更有帮助。

      本文所说的全局范围是指不在任何函数内部的代码。在这样的代码中,this 是对全局对象的引用。在浏览器中的 JavaScript 中,window 可以被认为是全局对象,并且可以在任何地方访问。

      总而言之,2、4 和 5 是一回事。 1 和 3 是您应该忘记的“全局对象的属性”的糟糕名称。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-12
        • 2018-11-13
        • 2014-02-23
        • 1970-01-01
        • 2021-09-05
        • 1970-01-01
        相关资源
        最近更新 更多