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
関数はそれらの変数が含まれているスコープにあるため、それらの変数にアクセスできます。
編集: の定義を IIFE に移動できない場合、myGlobalObj
私が考えることができる唯一のことは、IIFE を使用してアクセス元の 2 番目のグローバル オブジェクトを作成することです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();
}
};