javascript – Closure编译器导出所有原型和静态方法

是否有一种简单的方法可以让闭包编译器能够导出一个类及其所有原型和类型.静态方法并将名称保留为公共API?默认情况下,高级选项会重命名所有变量,但您可以将内容导出到全局范围,如:

window['MyClass'] = MyClass;

但是,这只会将MyClass导出到全局范围,所有原型和静态方法都会重命名.人们会认为你可以遍历原型并导出它们,不要:

for (var i in MyClass.prototype) {
    window['MyClass'].prototype[i] = MyClass.prototype[i];
}

这不起作用.我知道的唯一方法是手动添加它们:

window['MyClass'].prototype['myFunction'] = MyClass.prototype.myFunction;

我想暴露大约50个原型,所以这种方法不是首选.有谁知道如何以方便的方式导出整个班级?

最佳答案 你所描述的实际上是外在的:

Prevent Google Closure Compiler from renaming settings objects

您可以在此处查看大型外部文件的示例:
http://code.google.com/p/closure-compiler/source/browse/trunk/contrib/externs/jquery-1.6.js

您可以省略所有注释,只需使用以下语句:

jQuery.prototype.add = function(arg1, context) {};

确保不重命名add方法.您需要在externs文件的注释中包含@externs,或者将它作为–externs传递给Closure Compiler以使其正常工作.

点赞