2011-11-09 63 views
31

我想用JSDoc-toolkit來記錄我的代碼。我的代碼首先被自執行的匿名函數包裝起來。我如何記錄這個?我花了幾乎整整一天的時間。 JS Docs不會識別匿名函數封閉內的任何內容,因爲它不知道如何處理它。它打破了,我的意見都沒有通過。如何用jsdoc-toolkit記錄匿名函數(閉包)

我的代碼看起來像這樣。

/** 
* @fileoverview BLA BLA BLA 
*/ 

/** 
* This is where I don't know what to put. 
*/ 
(function() { 
    "use strict"; 

    /** or here */ 
    var stlib = function (param, param, param) { 
     /** or here */ 
     var share = { 
      /** or here */ 
      config: { 
       button: DOM Element, 
       property: blablabla 
      }, 

      init: function() { ...some init code here} 
     }; 

     share.init(); 
    }; 

    widgets.add("share", stlib); 
}()); 

謝謝!

+0

這是因爲JSDoc完全是java-isms並且不適合JavaScript。只需寫出明智的意見,而不是 – Raynos

+0

謝謝你,rjmunro。我同意。我認爲它根本不是本地化的。 但是,自從我轉爲使用Docco以獲取文檔以外, jashkenas.github.com/docco/ –

回答

4

您可以使用@namespace與@name和@lends這樣的:

/** 
* @name MyNamespace 
* @namespace Hold all functionality 
*/ 
(function() { 
    "use strict"; 
    /** @lends MyNamespace*/ 
    var stlib = function (param, param, param) { ...All of my code...}; 
}()); 
+0

我的歉意。這並沒有真正回答我想要做的事情。我用更多的信息更新了代碼片段。儘管謝謝你的回覆! –

+0

JavaScript中沒有名稱空間。構造甚至沒有意義 – Raynos

+3

@Raynos他們不在語言中有什麼不同?它們是[in](http://code.google.com/p/jsdoc-toolkit/wiki/TagNamespace)jsdoc。也許這不是真的語義,但我寫的,它的作品。 – Microfed

4

不能直接記錄嵌套函數。但是你可以做這樣的事情:

/** 
* @module foobar 
*/ 

/** 
* @function 
* @author Baa 
* @name hello 
* @description Output a greeting 
* @param {String} name - The name of the person to say hello 
*/ 
(function hello(name) { 
    /** 
    * @function 
    * @author Baz 
    * @inner 
    * @private 
    * @memberof module:foobar 
    * @description Check if the argument is a string (see: {@link module:foobar~hello}) 
    * @param {String} string - The string 
    * @returns {String} Returns true if string is valid, false otherwise 
    */ 
    var isString = function checkString(string) { return typeof string === 'string'; }; 
    if (isString(name)) 
     console.log('Hello ' + name + '!'); 
}('Mr. Bubbles')); 

這裏我設置checkString私人是描述性的(因爲嵌套函數不能被描述),然後我在-p傳遞給文件私人功能。最後,我添加一個鏈接到父函數以供參考。

我認爲jsdoc是不必要的挑剔,需要更好的東西取代。它的端口是javadoc,所以它有很多與Java相關但不是JS的東西,反之亦然。有非常常見的JS成語,如關閉嵌套函數,這是很難或不可能的文件。

我總是檢查我的名稱路徑並使用--explain標誌進行調試。