重複の可能性:
関数のクロージャーにアクセスすることは可能ですか?
このコードを見てください: http://jsfiddle.net/FH6pB/1/
(function($) {
var o1 = {
init: function() { alert('1'); },
}
var o2 = {
init: function() { alert('2'); },
}
}(jQuery));
(function($) {
var o3 = {
init: function() { alert('3'); },
}
o2.init();
}(jQuery));
o1.init();
o2.init();
2 つの異なる「スコープ」に 3 つのオブジェクトがあります (ここで使用する言葉が適切かどうかはわかりませんが、意味は理解できたと思います)。おそらくご存知のように、オブジェクトの機能に外部または他の「スコープ」からアクセスすることはできません (いずれも機能しませんo.init();
)。
なぜそれが起こるのですか?それを変更する方法はありますか?
コードを 1 つのスコープに入れるだけでうまく機能することはわかっていますが、別の JS ファイルにスコープがある場合はどうなるでしょうか?
前もって感謝します、ベン