【发布时间】:2011-10-19 08:51:23
【问题描述】:
JS 全局命名空间的变量是什么?它有引用吗?我可以更改它吗? (免责声明是的,如果可以的话,我知道这是一种糟糕的做法)
【问题讨论】:
-
我不知道你在说什么。但是,在浏览器中,全局空间是
window。window及其下定义的任何内容都可以直接从代码中的任何其他范围获得。
标签: javascript namespaces global
JS 全局命名空间的变量是什么?它有引用吗?我可以更改它吗? (免责声明是的,如果可以的话,我知道这是一种糟糕的做法)
【问题讨论】:
window。 window 及其下定义的任何内容都可以直接从代码中的任何其他范围获得。
标签: javascript namespaces global
在浏览器中,可通过window 访问。
alert(window.document === document); // true
我只是尝试在谷歌浏览器中使用赋值来更改它,但令人惊讶的是它没有效果。
【讨论】:
浏览器中 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 // 在某些情况下
【讨论】: