javascript - 闭包编译器高级优化防止对象属性重命名

标签 javascript minify google-closure-compiler

假设以下代码。

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 的定义。 exportSymbolgoog.exportProperty 具有相同的方法签名。

关于javascript - 闭包编译器高级优化防止对象属性重命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29975698/

相关文章:

javascript - 如何在angularjs中为get方法传递查询参数

javascript - Node.js如何流式传输音频文件

CSS calc() 以不同的方式编写

javascript - Promises polyfill 是否在 Google Closure Compiler 20161024 中包含 all()?

google-closure-compiler - 使用闭包编译器时如何保留 jQuery.ajax.data 对象?

javascript - 谷歌闭包编译器的高级优化没有优化一些变量

Javascript/Jquery onclick 函数凝结

javascript - 如何在单击的元素正下方显示详细信息 div/弹出框

javascript - 是否有使用js的js缩小器? (客户端,而不是服务器端,例如node.js)

javascript - 缩小插件 javascript 的合法性