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

  • 相关阅读:
    10. Regular Expression Matching
    9. Palindrome Number
    6. ZigZag Conversion
    5. Longest Palindromic Substring
    4. Median of Two Sorted Arrays
    3. Longest Substring Without Repeating Characters
    2. Add Two Numbers
    链式表的按序号查找
    可持久化线段树——区间更新hdu4348
    主席树——树链上第k大spoj COT
  • 原文地址:https://www.cnblogs.com/liulangbxc/p/14646534.html
Copyright © 2011-2022 走看看