2015-12-21 210 views
3

我正在使用JsDoc編輯js文件以獲取乾淨的文檔。 我的結構非常簡單:JsDoc命名空間

/** 
* Finds an object 
* @param {string} prop - Property 
*/ 

Array.prototype.findObject = function _findObj(prop, val){ 
    // blablabla 
} 


function myfunc(plep){ 
    // does something 
} 

/** 
* Workshop Namespace 
* @namespace 
*/ 

var Workshop = {}; 


/** 
* Does something great 
* @param {*} plep - My super param! 
*/ 
Workshop.doIt = myfunc; 

/** 
* It works! 
* @param {string} fly - my flying param 
*/ 
Workshop.flyNow = function _flyN (fly){ 
    // fly! 
} 

然而,

  1. 的文檔第一功能不顯示。
  2. 工作室命名空間創建
  3. Workshop.doIt由其描述只記錄,參數不
  4. Workshop.flyNow是有據可查的

有誰知道爲什麼嗎?

謝謝!

回答

1

Array是否存在符號?如果不是,那麼這就是沒有得到記錄的原因。

關於參數,你確定*是一個有效的類型?你可以試試Object

1
/** 
* Finds an object 
* @param {string} prop - Property 
*/ 

Array.prototype.findObject = function _findObj(prop, val){ 
    // blablabla 
} 

/** 
* Does something great 
* @param {*} plep - My super param! 
*/ 
function myfunc(plep){ 
    // does something 
} 

/** 
* Does something great 
* @param {*} plep - My super param! 
* @function 
*/ 
var alternativeDoIt = function myfunc2(plep){ 
// does the same thing 
} 

/** 
* Workshop Namespace 
* @namespace 
*/ 

var Workshop = {}; 


/** 
* Does something great 2 
* @function (<== check if this is useful) 
*/ 
Workshop.doIt = myfunc; 

Workshop.doIt2 = alternativeDoIt; 

/** 
* It works! 
* @param {string} fly - my flying param 
*/ 
Workshop.flyNow = function _flyN (fly){ 
    // fly! 
} 
1

這裏的原因:

第一個功能是未記錄,因爲它不屬於任何可識別的命名空間。要解決這個問題,可以按如下方式創建一個虛擬命名空間:

/** * @namespace Array */

而且可以提高函數的文檔如下:

/** 
* Finds an object. 
* 
* @param {string} prop Property name. 
* @param {string|number|function|object} val Value. 
* 
* @function findObject 
* @memberof Array# 
*/ 
Array.prototype.findObject = function _findObj (prop, val) { 
    // blablabla 
} 

下面 enter image description here

結果

3.

參數沒有記錄,因爲JSDoc解析器作爲一項功能,不會識別Workshop.doIt(...)。這可以固定與@function@method標籤:

/** * Does something great * @param {*} plep - My super param! * * @method */ Workshop.doIt = myfunc;

而結果是這樣的:enter image description here