繁体   English   中英

如何在JS中引用全局名称空间

[英]How to refer to Global name space in JS

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

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

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

我只是尝试使用Google Chrome浏览器中的分配更改它,但令人惊讶的是它没有任何效果。

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

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

在未以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

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

window //最常出现

top //在某些情况下

self

parent //在某些情况下

this //在某些情况下

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM