编译前:
function Foo(){
this.init = function(){
var bar = new Bar();
bar.init();
};
}
function Bar(){
this.init = function(){
console.log('Hello');
};
}
$(window).load(function(){
var foo;
foo = new Foo();
foo.init();
});
运行闭包编译器和格式化之后:
function Foo(){
this.init=function(){
(new Bar).init()
}
}
function Bar(){
this.init=function(){
console.log("Hello")
}
}
$(window).load(function(){
(new Foo).init()
});
如何让编译器压缩'init'标识符,所以我们有例如'a'而不是'init'?
答案 0 :(得分:2)
答案 1 :(得分:-2)
你不想这样做。 init
是一种公共方法。调用init
的代码期望将其命名为{{1}}。想象一下,如果你想使用jQuery的压缩版本,但所有的方法名称都被缩小了。 “.each()的简称是什么?”它当然可以完成,但它会适得其反,并且会使代码的可靠性失效。
另一个简短的轶事是谷歌地图JavaScript API缩小版。 LatLng对象的属性被缩小为$ a和$ b。我直接引用了这些属性来访问纬度和经度值。然后Google重建了该文件,并将属性名称更改为其他内容!我使用API文档来查找具有一致的预期名称的公共方法,而不是引用缩小的属性:getLatitude()和getLongitude()。这些方法通过缩小的名称引用内部属性,并简单地返回它们的值。如果方法名称包含在缩小中,我将回到最初的问题。