2012-10-01 42 views
2

当我测试在http://closure-compiler.appspot.com在封闭编译如下代码:为什么Closure编译器不能用某些名称重命名对象?

// ==ClosureCompiler== 
// @output_file_name default.js 
// @compilation_level ADVANCED_OPTIMIZATIONS 
// @formatting pretty_print 
// ==/ClosureCompiler== 

// These get renamed 
window.foo = {}; 
window.bar = {}; 

// These don't 
window.uid = {}; 
window.test = {}; 

输出是:

window.a = {}; 
window.b = {}; 
window.uid = {}; 
window.test = {}; 

为什么将其重命名:

window.foo = {}; 
window.bar = {}; 

但不是:

window.uid = {}; 
window.test = {}; 

这似乎是某个单词的问题?

回答

6

更新

随着20150315释放封闭编译的,基于类型的优化默认情况下启用。


关闭编译器将不重命名具有如任何属性,除非--use_types_for_optimization标志被允许在实习医生的对象上所定义的相同名称的属性。有关更多详情,请参阅the project FAQ

+0

“test”是RegExp对象的属性,对于“uid”,则为: ScriptProfile.prototype.uid; – John

+0

我试过'''--use_types_for_optimization''',但仍然看到相同的结果。提到的默认extern没有引用.uid –

+0

感谢John,cross posted,我没有看到那个uid引用,但我会再看一次。 –

相关问题