私は新しい会社で働き始めたばかりで、多くのJSで私には完全に間違っているように見える何かに気づきました。私はかなり後輩で、JSの専門家ではなく、2日目であり、愚かに見えたくないので、これが間違っていることを確認せずにそれを持ち出すのは少し躊躇しています。
したがって、通常、モジュールパターンは次のようになります。
MODULENAME = MODULENAME || {};
MODULENAME.SUBMODULENAME = (function() {
var bla = {};
bla.somefunction = function() {
//do stuff
};
//add more stuff to bla
return bla;
}());
彼らがコード全体に持っているのは:
MODULENAME = MODULENAME || {};
MODULENAME.SUBMODULENAME = (function() {
var that = this;
that.somefunction = function() {
//do stuff
};
//add more stuff to that
return that;
}());
もちろん、関数はnewキーワードを使用したコンストラクターとしてもメソッドとしても呼び出されていないため、thisにバインドされ、としてwindow定義thatされていますthis。したがって、基本的にすべてをグローバルオブジェクトにダンプし、すべてのサブモジュール名は実際にはのエイリアスですwindow。誰かがこれをしたいと思う理由はありますか?それとも、これは私が思うほど本当に間違っているのでしょうか?
編集:
サブモジュール定義の前に置くのを間違えましたvar。元々、少し違うものを書き、を削除するのを忘れていましたvar。私も例をもう少し明確にしようとしましたが、うまくいけば、私が今何を意味しているのかがより明確になります。
編集2:
また、Firebugで実行されているスクリプトを見てきましたが、それらは間違いなくすべてを追加してwindowいます。そのオブジェクトは完全に混乱しています。