我在使用高级优化的 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")
}};
我仍然不知道是什么原因造成的。