Google封闭编译器方法转换为全局函数

时间:2016-07-21 09:20:07

标签: javascript google-closure-compiler

我有这个简单的代码: (我删除了一些代码以保持简单...)

tb[,diff(tb)!=0]

}

在我跑完之后 if(!window['PSI']) window['PSI'] = {}; /**@constructor*/ window['PSI']['Select'] = function(pattern) { this.highlight(pattern); } window['PSI']['Select'].prototype = { highlight: function( pattern) { var regex = (typeof pattern === 'string') ? new RegExp(pattern, 'i') : pattern; var highlight = function(node) { if (node.nodeType === 3) { var pos = node.data.search(a); } else if (node.nodeType === 1 ) { for (var i = 0; i < node.childNodes.length; ++i) { i += highlight(node.childNodes[i]); } } } var items = document.getElementsByTagName("li"); for (var i = 0; i < items.length; ++i) { highlight(items[i]); } }

这是输出:

java -jar closure-compiler-v20160713.jar --compilation_level ADVANCED_OPTIMIZATIONS --js source.js --js_output_file source.min.js

我的高亮方法变成了一个全局函数,有没有办法让我的方法成为PSI.Select对象的原型? 奇怪的是,并非我的所有方法都是这样的,只有2 ...这是其中之一

1 个答案:

答案 0 :(得分:0)

我必须在我的方法之前添加--generate_exports和--export_local_property_definitions标志和/ ** @export * /,似乎编译器注意到我的方法从未引用'this'并且它决定从原型中删除它很安全,但我不想那样。如果有人有更好的建议请做。