我有以下 Moo 类:


Nem.Ui.Window = new Class({
    Implements: [Options, Events],

    options: {
        caption:    "Ventana",
        icon:       $empty,
        centered:   true,
        id:         $empty,
        width:      $empty,
        height:     $empty,
        modal:      false,
        desktop:    $empty,
        x:          $empty,
        y:          $empty,
        layout:     $empty
    },

    initialize: function(options)
    {
        this.setOptions(options);
        /* ... */
    },

    setHtmlContents: function(content)
    {
        /* ... */
    },

    setText: function(text)
    {
        /* ... */
    },

    close: function(win)
    {
        /* ... */
    },

    /* ... */
});

我想用 JsDoc 记录它。我读到您可以在 @lends [class].prototype 中使用 new Class 并使用 initialize 标签标记 @constructs。我如何标记方法和事件?

即:setHtmlContents 应该是一个方法,close 应该是一个事件。

另外,可以以某种方式记录 options 下的元素吗?

最佳答案

您可以使用 @function 标记方法,使用 @event 标记事件,但是由于默认情况下可以正确检测到函数,因此在您的情况下不需要 @function 标记。
options 下的元素可以用 @memberOf 记录,在你的例子中用 @memberOf Nem.Ui.Window# 。然后它们将在生成的 JSDoc 中显示为 options.optionName

您的类(class)的完整记录版本将类似于

/** @class This class represents a closabe UI window with changeable content. */
Nem.Ui.Window = new Class(
/** @lends Nem.Ui.Window# */
{
    Implements: [Options, Events],

    /** The options that can be set. */
    options: {
        /**
         * Some description for caption.
         * @memberOf Nem.Ui.Window#
         * @type String
         */
        caption:    "Ventana",
        /**
         * ...
         */
        icon:       $empty,
        centered:   true,
        id:         $empty,
        width:      $empty,
        height:     $empty,
        modal:      false,
        desktop:    $empty,
        x:          $empty,
        y:          $empty,
        layout:     $empty
    },

    /**
     * The constructor. Will be called automatically when a new instance of this class is created.
     *
     * @param {Object} options The options to set.
     */
    initialize: function(options)
    {
        this.setOptions(options);
        /* ... */
    },

    /**
     * Sets the HTML content of the window.
     *
     * @param {String} content The content to set.
     */
    setHtmlContents: function(content)
    {
        /* ... */
    },

    /**
     * Sets the inner text of the window.
     *
     * @param {String} text The text to set.
     */
    setText: function(text)
    {
        /* ... */
    },

    /**
     * Fired when the window is closed.
     *
     * @event
     * @param {Object} win The closed window.
     */
    close: function(win)
    {
        /* ... */
    },

    /* ... */

});

我已经跳过了 @constructs 中的 initialize,因为那时它根本不会出现在文档中,而且我还没有想出如何让它正常工作。

有关可用标签及其功能的更多信息,请参阅 jsdoc-toolkit 的 TagReference 中的 wiki

关于javascript - MooTools 类和 JsDoc,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2775586/

10-11 20:33