このコード構造を Google Closure Compiler による難読化に耐えさせるのに苦労しています。サンプルコードは次のとおりです。
var MyModule = (function()
{
function myModule()
{
// Constructor
}
function moduleFoo(url)
{
// Method
}
function moduleBar()
{
// Method
}
myModule.prototype = {
constructor: myModule,
foo: moduleFoo,
bar: moduleBar
};
return myModule;
})();
私のコードの他の場所では、次のようなものを書くことができる必要があります:
var myMod = new MyModule();
myMod.foo();
myMod.bar();
ただし、コンパイラはすべての名前を変更しています (予想どおり)。定義したプロトタイプを、難読化後にコード内の他の場所で使用できるようにするにはどうすればよいですか? 私は次のようにエクスポートしようとしました:
// In place of the prototype object above
myModule.prototype['constructor'] = myModule;
myModule.prototype['foo'] = moduleFoo;
myModule.prototype['bar'] = moduleBar;
window['myModule'] = myModule;
しかし、プロトタイプ メソッドが呼び出されたとき、または対応するクロージャが実行されたときに、事態は崩壊するようです。
どんな助けでも大歓迎です。