core.js があるとします
var ajax = function(){};
var something = function(){super};
var globalconstant = 5;
var someutilitymodule = {
onekey: something;
twokey: something;
}
これをファイルに含めると<script src="core.js">
1) グローバル名前空間を汚染します
2) 別の変数を [置き換える/置き換える] 可能性があります。
しかし、オブジェクトにすれば問題は解決しませんか? つまり、このようにcore.jsを作成します
core =
{
ajax : function(){},
something : function(){super},
globalconstant : 5,
someutilitymodule = {
onekey: something;
twokey: something;
}
}
このアプローチの根本的な問題は何ですか? 完全なオブジェクトが作成されるまで、他のアイテムにアクセスできないためですか? たとえば、core = {a:"Foo" , b:a}
うまくいきませんか?しかし、私はそれを解決することができました
core = {};
core.a="Foo";
core.b=core.a;
クロージャーに本当に興味がないのに、なぜ IIFE (Immediately Invoked Function Expression) に入る必要があるのでしょうか? すべてを別の名前空間で公開することを気にしないJavascriptの「モジュール名前空間」の場合、このアプローチは機能し、Javascriptでモジュール効果を作成しませんか?
これについてもっと読むための指針はありますか?私はそれが少し曖昧であることを知っていますが、IIFE requirejs などのようなこの概念は初めてです。初心者の視点から理解しようとしています。