【问题标题】:How to refer to Global name space in JS如何在 JS 中引用全局命名空间
【发布时间】:2011-10-19 08:51:23
【问题描述】:

JS 全局命名空间的变量是什么?它有引用吗?我可以更改它吗? (免责声明是的,如果可以的话,我知道这是一种糟糕的做法)

【问题讨论】:

  • 我不知道你在说什么。但是,在浏览器中,全局空间是windowwindow 及其下定义的任何内容都可以直接从代码中的任何其他范围获得。

标签: javascript namespaces global


【解决方案1】:

在浏览器中,可通过window 访问。

alert(window.document === document);    // true

我只是尝试在谷歌浏览器中使用赋值来更改它,但令人惊讶的是它没有效果。

【讨论】:

    【解决方案2】:

    浏览器中 Javascript 的全局命名空间/对象是 window。据我所知,你可以改变它,但不要。

    编辑:我错了。幸运的是,您无法更改它(例如,window = {}; 无效,至少在 Chrome 中无效)。

    【讨论】:

      【解决方案3】:

      在未在 ECMAScript 3.1 严格模式下运行的 JavaScript 中,您可以使用关键字 this 引用全局对象,但仅在不执行具有对象上下文的函数内的代码时。

      // In global scope:
      alert(this.Math === Math);  //-> true
      
      function test() {
          alert(this.Math === Math);
      }
      
      test();     //-> true
      
      var someObj = {};
      test.call(someObj); //-> false, `this` is `someObj`
      

      在浏览器中,正如其他答案所提到的,window 对象也是全局对象。

      alert(this === window); //-> true
      alert(this.alert === window.alert); //-> true
      

      【讨论】:

        【解决方案4】:

        全局命名空间有以下名称:

        window // 最常见的

        top // 在某些情况下

        self

        parent // 在某些情况下

        this // 在某些情况下

        【讨论】:

          猜你喜欢
          • 2010-10-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-11
          • 1970-01-01
          • 1970-01-01
          • 2013-05-25
          相关资源
          最近更新 更多