高度な最適化を備えた Google Closure Javascript コンパイラで問題が発生しています。ドキュメントが示唆するように、エクスポートされた Javascript を保持するには、次のようにします。
var myClass = function() {
this["myFunc"] = this.myFunc;
this["myFunc2"] = this.myFunc2;
};
window["myClass"] = myClass;
myClass.prototype = {
myFunc: function() { alert("myFunc"); },
myFunc2: function() { alert("myFunc2"); }
};
問題は、何らかの理由で短縮さmyFunc
れmyFunc2
ないことがあり、最終出力に次のようなコードが表示されることです。
x.myFunc=x.myFunc;x.myFunc2=x.myFunc2;
これは明らかに理想的ではありません。
どうすればこれを防ぐことができますか?
さらに実験を重ねた結果、'get' などの特定のキーワードがコンパイルされないことが示されました。
var myClass = function() {
this["get"] = this.get;
this["myFunc2"] = this.myFunc2;
};
window["myClass"] = myClass;
myClass.prototype = {
get: function() { alert("myFunc"); },
myFunc2: function() { alert("myFunc2"); }
};
にコンパイルします
function a() {
this.get = this.get;
this.myFunc2 = this.a
}
window.myClass = a;
a.prototype = {get:function() {
alert("myFunc")
}, a:function() {
alert("myFunc2")
}};
何が原因なのかはまだわかりませんが。