我准备了三个文件:
java -jar compiler.jar --js=utf8.js --js_output_file=utf8-advanced.js --charset=utf8 --compilation_level=ADVANCED_OPTIMIZATIONS --formatting=SINGLE_QUOTES --formatting=PRETTY_PRINT --externs=externs.js --use_only_custom_externs
使用Javascript:
window.erest['module'] = window.erest['module'] || {};
window.erest.module = window.erest['module'];
var module = window.erest.module;
window.erest.module.hello = function() {
for (var i = 0; i < 5; i++) {
window.erest.debug.hello();
}
}
window.erest.module.max = function() {
var list = [];
for (var i = 0; i < list.length; i++) {
window.erest.debug.hello();
}
}
window.erest.module.maximum = function() {
window.erest.debug.hello();
}
实习医生:
/**
* @externs
*/
/**
* @noalias
*/
var erest = {};
erest.debug = {};
/**
* @return null
*/
erest.debug.hello = function () {};
输出:
window.a.module = window.a.module || {};
window.a.b = window.a.module;
window.a.b.hello = function() {
for (var b = 0;5 > b;b++) {
window.a.debug.hello();
}
};
window.a.b.max = function() {
for (var b = [], c = 0;c < b.length;c++) {
window.a.debug.hello();
}
};
window.a.b.c = function() {
window.a.debug.hello();
};
问题 - 为什么外部人员不在这里工作:
window.a.debug.hello() should be window.erest.debug.hello()
为什么这个外部人员没有帮助:
var erest = {};
答案 0 :(得分:1)
Closure-compiler将全局对象上的属性视为与全局变量不同的对象。您必须始终引用名称。
请参阅Understanding the Restrictions Imposed by the Closure Compiler
下的“将变量称为全局对象的属性”项目符号