2015-12-21 4 views
3

Я редактирую файл js с JsDoc, чтобы получить чистую документацию. Моя структура довольно проста:JsDoc Namespace

/** 
* 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

Вот почему:

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

Смежные вопросы