您的 IIFE 的“内容”,即 、a
等someFunc
,在该函数范围内是本地的,因此您只能在该范围内访问它们。但是您可以window.myGlobalObj
在 IIFE 内分配:
(function() {
var a = 5;
var someFunc = function() { ... };
function anotherFunc() {
...
};
window.myGlobalObj = {
init: function() {
// and somehow here I want to access to the IIFE context
}
};
})();
然后该init
函数将可以访问这些变量,因为它们在其包含范围内。
编辑:如果您不能将定义myGlobalObj
移到 IIFE 中,我唯一能想到的就是使用 IIFE 创建您从中访问的第二个全局对象myGlobalObj
:
(function() {
var a = 5;
var someFunc = function() { ... };
function anotherFunc() {
...
};
// create a global object that reveals only the parts that you want
// to be public
window.mySecondObject = {
someFunc : someFunc,
anotherFunc : anotherFunc
};
})();
window.myGlobalObj = {
init: function() {
window.mySecondObject.someFunc();
}
};