使用带有局部变量的'window'进行JavaScript中的全局访问

时间:2013-02-21 14:29:04

标签: javascript variables global-variables

我想全局访问一个局部变量(不改变变量的名称空间或位置)。我read我可以使用'window。',但它不起作用:

var myNameSpace = {
        window.localVar : 'foo'
    };

alert(window.localVar);  // not working

fiddle

这样的事情可以吗?

另外,我已经了解了全局变量的风险。如果我几乎可以肯定变量的名称没有被重用的风险,那么它是否安全?

$myTotallyUniqueVarName

2 个答案:

答案 0 :(得分:4)

var myNameSpace = { };

myNameSpace.localVar = window.localVar = 'foo';

从其他对象定义时,您无法访问其他对象,就像您尝试过的那样。但是你当然可以为同一个值创建多个引用/赋值,如上所示。

但是,请注意,在这种情况下我们会分配原始值,这意味着window.localVarmyNameSpace.localVar将拥有自己的唯一值。任何更改都会反映在另一方。

答案 1 :(得分:1)

可以全局访问以某种方式与全局对象相关的每个变量。在浏览器中,window变量表示全局对象。

function a() {
 bvar = 3; // accessable
 var cvar = 4; // inaccessable
}

a();

alert(window.bvar === 3); // true
alert(window.cvar === 4); //false, cvar is undefined

// this refers here to the global object
alert(window.bvar === this.bvar); // true