假设以下代码。
1) 在ClosureTestClass构造函数中,我们得到一个从外部系统传递过来的对象。如果在此代码中重命名 inputObjectFromExternalSystem 的 property1,则从外部系统发送的对象将不具有重命名的属性。有没有办法指定编译器不重命名特定对象的属性。
我知道我们可以使用
inputObjectFromExternalSystem['property1'].
我正在评论中寻找类似/** @expose */的内容。我尝试使用/** @lends */但它不起作用。
// ==ClosureCompiler==
// @compilation_level ADVANCED_OPTIMIZATIONS
// @output_file_name default.js
// @formatting pretty_print
// @use_closure_library true
// ==/ClosureCompiler==
/** @export */
var ClosureTestClass = (function () {
function ClosureTestClass(inputObjectFromExternalSystem) {
this.property1 = inputObjectFromExternalSystem.property1;
this.property2 = inputObjectFromExternalSystem.property2;
}
/** @expose */
ClosureTestClass.prototype.printProperty = function () {
console.log(this.property1);
console.log(this.property2);
};
return ClosureTestClass;
})();
/** @export */
var ClosureTestClassUse = (function () {
function ClosureTestClassUse () {
this.closureTest = new ClosureTestClass;
}
/** @expose */
ClosureTestClassUse.prototype.print = function () {
console.log(this.closureTest);
};
return ClosureTestClassUse;
})();
var a = new ClosureTestClassUse();
2)/** @lends */的用例是什么
最佳答案
@export
旨在防止重命名 - 并且是实现此目的的唯一受支持的注释。您还必须使用 --generate_exports
标志,并且您的源代码必须包含 Closure-library 中的 base.js
文件,或者包含定义两个 goog.js 的定义。 exportSymbol
和 goog.exportProperty
具有相同的方法签名。
关于javascript - 闭包编译器高级优化防止对象属性重命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29975698/