Документирование класса javascript с прототипами в пространстве имен с использованием jsdoc-toolkit - PullRequest
10 голосов
/ 11 апреля 2011

Я очень стараюсь документировать код в формате ниже с помощью jsdoc-toolkit.Мне кажется, что теги, которые я использовал, должны давать желаемый результат, но это не так.Вместо этого он предупреждает, что Class недокументирован (потому что он определен только внутри замыкания) и не включает Class в список членов пространства имен.

Я бы хотел документировать это, не прибегая к использованию тега @name, если это возможно.Кто-нибудь может помочь?

/**
 * @namespace The original namespace
 */
var namespace = function () {
    // private
    /**
     * @private
     */
    function _privateMethod () {

    };

    /**
     * This is the detail about the constructor
     * @class This is the detail about the class
     * @param {Object} argone The first argument
     * @param {Object} argtwo The second argument
     */
    var Class = function (argone, argtwo) {
        /**
         * A public member variable
         */
        this.member = "a member";
    };

    /**
     * A public method
     * @param {Object} argone The first argument
     */
    Class.prototype.publicMethod = function (argone) {

    };

    return /** @lends namespace */ {
        Class: Class
    }
}();

Ответы [ 2 ]

4 голосов
/ 08 января 2013

Я пробовал кучу разных вещей, и это было лучшее, что я мог придумать.

Первая часть ... документирование publicMethod на Class. Сначала сделайте Class a memberOf namespace, а затем используйте @lends на Class.prototype. Пример:

/**
 * @namespace The original namespace
 */
var namespace = function () {
    // private
    /**
     * @private
     */
    function _privateMethod () {

    };

    /**
     * This is the detail about the constructor
     * @class This is the detail about the class
     * @memberOf namespace
     * @param {Object} argone The first argument
     * @param {Object} argtwo The second argument
     */
    var Class = function (argone, argtwo) {
        /**
         * A public member variable
         */
        this.member = "a member";
    };

    Class.prototype = 
    /** @lends namespace.Class */ 
    {
        /** a public method
          * @param {Object} argone The first argument
        */
        publicMethod: function (argone) {

        }
    };

    return {
        Class: Class
    }
}();

Теперь вторая часть ... заставляет Class отображаться как на namespace. Я не уверен, как это сделать ... извините! Он будет отображаться как namespace.Class в индексе класса.

0 голосов
/ 06 февраля 2013

Так же, как совет: в jsdoc 2 полно ошибок и плохих практик.
Попробуйте JSDOC3 -> https://github.com/jsdoc3/jsdoc или вообще не используйте jsdoc в зависимости от характера проекта.

...