【发布时间】:2011-07-04 20:05:34
【问题描述】:
我在使用高级优化的 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")
}};
我还是不知道是什么原因造成的。
【问题讨论】:
标签: javascript google-closure-compiler