闭包编译器是否有一种简单的方法可以导出一个类及其所有的原型&静态方法并将名称保留为公共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个原型,所以这个方法不是首选。有谁知道如何以方便的方式导出整个班级?
答案 0 :(得分:1)
查看@export注释,该注释在JavaScript中有记录 风格指南:http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml?showone=Comments#Comments
答案 1 :(得分:1)
你所描述的实际上是什么外星人: 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,以使事情正常工作。