Статический метод класса пространства имен javascript jsdoc

Я пытаюсь использовать jsDoc в своем коде js, в котором я хочу определить: - Пространство имен. - Класс. - Статический метод. Обратите внимание, что код делает именно то, что я ожидаю во время выполнения, но у меня проблемы с началом работы с jsDoc, поэтому я задаюсь вопросом, правильный ли код...

/** @namespace
 * @name myNamespace
 * @description myNamespace description.
 */
if (typeof (myNamespace) == "undefined") myNamespace = { };

/** @class 
 * @name myClass
 * @description myClass description.
 * @memberof myNamespace
 * @inner
 */
myNamespace.myClass = function () { };

/** @method
 * @name myStaticMethod
 * @description myStaticMethod description.
 * @param {String} myParam. Required. myParam description.
 * @return myReturnValue description.
 * @remarks remarks description.
 * @memberof myNamespace.myClass
 * @inner
 */
myNamespace.myClass.myStaticMethod = function (myParam) {
    var myReturnValue = myParam;
    return myReturnValue;
};

Когда я генерирую с помощью jsDoc, я вижу в индексе: - Исправьте определение myNamespace. - Правильное определение myClass. Когда я захожу внутрь myClass, я не вижу myStaticMethod... myStaticMethod нигде нет. Мой JS закодирован правильно? Если правильно закодирован... Правильно ли написаны комментарии? Что случилось?

Большое спасибо...


person Falco    schedule 19.09.2014    source источник
comment
Примечание: typeof — это оператор, а не функция; нет необходимости в скобках вокруг значения, по той же причине вы можете просто написать 1 + 2 вместо (1) + (2) и new ClassName() вместо new (ClassName()).   -  person T.J. Crowder    schedule 19.09.2014
comment
Отдельно ваш код опирается на Ужас неявных глобальных переменных для создания myNamespace. Лучший способ: var myNamespace; (который не имеет никакого эффекта, если он уже существует), за которым следует ваш тест typeof.   -  person T.J. Crowder    schedule 19.09.2014
comment
Спасибо, возьму на заметку и попробую рефакторить код...   -  person Falco    schedule 19.09.2014


Ответы (2)


Если вы собираетесь использовать @name, вам нужно сообщить JsDoc, что это за элемент; использование @name указывает JsDoc полностью игнорировать контекст.

В вашем случае, я думаю, вам нужно добавить @static (у вас уже есть @memberof, так что это хорошо).

person T.J. Crowder    schedule 19.09.2014

Т.Дж. Краудер был прав, я не могу голосовать, потому что я молод в сообществе, это исправленные комментарии к коду для jsDoc, если кому-то нужно:

/** @namespace
 * @name myNamespace
 * @description myNamespace description.
 */
if (typeof (myNamespace) == "undefined") myNamespace = { };

/** @class 
 * @name myNamespace.myClass
 * @description myClass description.
 * @memberof myNamespace
 * @inner
 */
myNamespace.myClass = function () { };

/** @function
 * @static
 * @name myNamespace.myClass.myStaticMethod
 * @description myStaticMethod description.
 * @param {String} myParam. Required. myParam description.
 * @return myReturnValue description.
 * @remarks remarks description.
 * @memberof myNamespace.myClass
 * @inner
 */

myNamespace.myClass.myStaticMethod = function (myParam) {
    var myReturnValue = myParam;
    return myReturnValue;
};
person Falco    schedule 19.09.2014