zoukankan      html  css  js  c++  java
  • Global对象和浏览器的window对象

    Global对象是EMCAScript的一个单体内置对象。

    ECMA-262对内置对象的定义是:“由ECMASript实现提供的、不依赖于宿主环境的对象,这些对象在ECMAScript程序执行以前就已经存在了。开发人员不必显式地实例化内置对象,因为它们已经实例化了。

    ECMAScript中的Global对象在某种意义上是作为一个终极的“兜底对象”来定义的,不属于任何其他对象的属性和方法,最终都是它的属性和方法。事实上,没有全局变量和全局函数,所有在全局作用域中定义的属性和函数,都属于Global对象的属性。

    关于Window对象
    ECMASript没有指出如何直接访问Global对象,但Web浏览器都是将这个全局对象作为window对象的一部分加以实现的。因此,在全局作用域中声明的所有变量和函数,就都成为了window对象的属性了。

    一个全局对象是一个永远存在于 global scopeobject.

    在 JavaScript 中, 有一个永远被定义的全局对象. 在一个 web 浏览器中, 当脚本创建全局变量时, 他们作为该全局对象的成员被创建. (在 Node.js 不是这样.) 全局对象的 interface 取决于脚本在其中运行的执行上下文. 例如:

    • 在Web浏览器中,脚本没有专门作为后台任务启动的任何代码都将Window 作为其全局对象。这是Web上绝大多数的JavaScript代码。
    • Worker 中运行的代码将WorkerGlobalScope 对象作为其全局对象。
    • Node.js 环境下运行的脚本具有一个称为[global](https://nodejs.org/api/globals.html#globals_global) 的对象作为其全局对象。

    总结来说,Global是一个抽象的概念,凡是应用了ECMASript标准的环境都需要一个具象化一个Global对象,这个具象化的对象具有但不限于Global的所有特性。在浏览器中是window,在Worker中是WorkerGlobalScope,在Node.js中则是global。这是角色和演员的关系。
    下面提供一种获得Global对象的方法:

    var global = function(){
        return this;
    }();
    

    在没有给函数明确指明this的值的情况下(无论是通过函数添加为对象的方法,还是通过调用call()或apply()传入作用域),this值等于Global对象。

    感谢阅读!

    参考:https://developer.mozilla.org/zh-CN/docs/Glossary/Global_object

  • 相关阅读:
    delphi的dbgrid控件点击title排序
    在 Delphi 中使用微软全文翻译的小例子
    Google的搜索API的Delphi封装
    Delphi 自动检测U盘插入、拔出及获取U盘盘符!
    ERP开发准备
    Delphi中TStringList类常用属性方法详解
    JavaScript prototype详解
    TestNG 自动化测试入门教程--典型示例
    ucloud中的udisk错误“Read-only file system”修复指南
    websocket(二)--简单实现网页版群聊
  • 原文地址:https://www.cnblogs.com/liulangbxc/p/14646534.html
Copyright © 2011-2022 走看看