簡體   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