我有以下代码:
var Module = (function () {
var parameters = {};
var foo = function() {
parameters = {'aaa': 'aaa2'};
// Module.parameters = {'aaa': 'aaa2'};
};
return {
foo: foo
};
})();
var Module2 = (function () {
var bar = function() {
console.log(Module.parameters);
};
return {
bar: bar
};
})();
当我初始化这样的参数然后从Module2
访问它时,我得到空对象。
但是当我用Module.parameters
初始化它时,我得到了正确的结果。
这种差异来自哪里?
答案 0 :(得分:1)
如果您使用var定义了一些本地变量,这意味着您可以在声明它的函数中访问该变量。当你定义类似module.foo =“value”的东西时,它就是一个对象的成员。如果您可以访问该对象,您也可以访问成员
答案 1 :(得分:0)
让我们稍微简化一下。想象一下你有
var x = 42;
var obj = {
y: 21,
};
您目前正在执行与访问obj.x
相同的操作。但是obj
没有这样的属性。它只有属性y
。 x
只是一个变量,完全独立于obj
。
对于parameters
和foo
,情况也是如此。您要返回的对象
return {
foo: foo
};
只有一个属性foo
。 parameters
是一个与对象无关的变量。
分配给Module.parameters
“有效”,因为您正在改变您返回的对象,添加新属性。它等同于
obj.x = 'something';
在我的例子中。