2011-11-21 51 views
3

我正在使用以下函數來修改特定的Javascript數組實例的行爲。我如何註釋Closure Compiler的代碼? http://code.google.com/closure/compiler/docs/js-for-compiler.html通過編譯器運行代碼會產生「JSC_USED_GLOBAL_THIS」錯誤。如何在以下Javascript函數中將「this」的用法註釋到Closure Compiler中?

function listify(array) { 
    array.toString = function() { 
     return '[' + this.join(', ') + ']'; 
    }; 
    return array; 
}; 

它看起來不像我可以使用@extends或@constructor註釋。

我不想修改全局數組的原型,因爲當頁面上使用其他代碼時會產生意想不到的副作用。另外,在閱讀http://perfectionkills.com/how-ecmascript-5-still-does-not-allow-to-subclass-an-array/之後,我認爲我的方法對我的用例來說是最好的。問題是我只是不知道如何將它註釋到編譯器

+0

它說在你連接的文檔中是正確的:'爲了防止編譯器警告,你必須使用@this註釋,只要它出現在函數既不是原型方法,也不是標記爲@構造函數的函數。「# – Esailija

+0

@Esailija:好的。我不確定正確的方式來註釋它。我會用「{AT} this {Array}」? – user319862

+0

@Esailija:如果您回覆的答案修復了包含類型定義的代碼,我會將其標記爲答案。 – user319862

回答

3
function listify(array) { 

    /** 
    * Returns the roster widget element. 
    * @this {Array} 
    * @return {String} 
    */ 
    array.toString = function() { 
     return '[' + this.join(', ') + ']'; 
    }; 
    return array; 
}; 
+0

謝謝。我只是不確定是否有更具體的JSDoc使用。 – user319862

相關問題