繁体   English   中英

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

[英]Closure compiler Advanced Optimization prevent object property renaming

假设以下代码。

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.exportSymbolgoog.exportProperty定义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM