是否有推荐的javascript代码混淆工具?
我在stackoverflow中搜索了它,有人建议使用'YUI压缩器'。
然而,它只是执行以下操作:
删除annotatation / white space / new line
替换本地变量
或其他东西。
但它不会取代一个对象的属性。
说我有这样的代码:
var a=obj.fun();
var b=obj.pro;
我想要这样的事情:
var xxx,yy,zz;
xxx=obj['yy']();
yy=obj['zz'];
然后即使人们重新格式化我的代码,他甚至不知道一个对象的属性/方法,除非他重新进行方法/属性替换。
这只是一个例子,我只是想让工具做更多的混淆而不仅仅是压缩。
有什么建议吗?
答案 0 :(得分:1)
试试Google Closure Compiler。在高级模式下,它还会重构代码的一部分,并以这种方式创建一些性能改进。
答案 1 :(得分:1)
Javascript是一种动态类型语言,与浏览器交互,因此几乎不可能进行适当的分析以找到对象在代码中弹出的位置。
由于这些原因,您无法安全地重命名对象的属性。
答案 2 :(得分:0)
我对这个主题知之甚少。我想建议谷歌闭包编译器:
http://code.google.com/closure/compiler/docs/api-tutorial3.html
它说它们进行了属性重命名
答案 3 :(得分:0)
您应该尝试google closure compiler,它提供三个级别的写作:
WHITESPACE_ONLY
SIMPLE_OPTIMIZATIONS
ADVANCED_OPTIMIZATIONS
WHITESPACE_ONLY
删除评论,修剪换行符和不必要的空格。输出代码与源JavaScript相同。
SIMPLE_OPTIMIZATIONS
还重命名局部变量和函数参数。
ADVANCED_OPTIMIZATIONS
是最具侵略性的,除了上述两个级别的优化之外,它还有:
对于举例:
//INPUT CODE
function unusedFunction(note) {
alert(note['text']);
}
function displayNoteTitle(note) {
alert(note['title']);
}
var flowerNote = {};
flowerNote['title'] = "Flowers";
displayNoteTitle(flowerNote);
WHITESPACE_ONLY
结果是:
//WHITESPACE_ONLY OUTPUT CODE
function unusedFunction(note){alert(note["text"])}function displayNoteTitle(note){alert(note["title"])}var flowerNote={};flowerNote["title"]="Flowers";displayNoteTitle(flowerNote);
SIMPLE_OPTIMIZATIONS
结果是:
//SIMPLE_OPTIMIZATIONS OUTPUT CODE
function unusedFunction(a){alert(a.text)}function displayNoteTitle(a){alert(a.title)}var flowerNote={title:"Flowers"};displayNoteTitle(flowerNote);
ADVANCED_OPTIMIZATIONS
结果是:
//ADVANCED_OPTIMIZATIONS OUTPUT CODE
alert("Flowers");
我认为SIMPLE_OPTIMIZATIONS
和ADVANCED_OPTIMIZATIONS
符合您的需求。