如何正确记录通过Object.defineProperties添加的实例成员?

时间:2012-09-17 05:43:40

标签: javascript jsdoc

我有一个通过Object.defineProperties定义一些实例属性的类,我很难让JSDoc 3认识到他们属于他们的班级。

以下是我正在使用的简化版本:

/** @exports mymodule */
function mymodule(exports) {
    /** @constructor
      * @param {String} foo A foo.
      * @param {String} bar A bar.
      * @classdesc Has a foo and a bar.
      */
    function Example(foo, bar) {
        Object.defineProperties(this, {
            /** A foo and a bar
              * @memberof Example
              */
            foobar: { enumerable: false, value: foo + bar, writable: false }
        });
    }

    exports.Example = Example;
}

当我运行JSDoc时,我获得mymoduleExamplefoobar的输出,但不是foobar。如果我删除了@memberof的{​​{1}}标记,则会将其注册为全局标记。我已尝试foobar,将@memberof mymmodule~Example添加到@lends调用和传递给它的对象,并将其转换为Object.defineProperties,但结果不会更改。

如何将Object.defineProperty归档为属于foobar

3 个答案:

答案 0 :(得分:8)

在深入研究我能找到的每个例子后,我终于收集了必要的咒语 - @memberof确实是诀窍,但JSDoc似乎要求在名称路径中使用的模块明确标记为这样。以下工作完美:

/** A foo and a bar
  *
  * @type String
  * @instance
  * @memberof module:mymodule~Example
  */

答案 1 :(得分:0)

在摆弄了好几个小时之后,我终于让它与@memberOf!一起工作了。注意大写的“O”和爆炸“!”

/**
 * Description
 * @memberOf! MyClass
 * @type {String}
 */
var myString;

答案 2 :(得分:0)

您还可以尝试使用@lends注释代替@memberOf:

div class="btn-group open"><button id="bookmarked_button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="true" type="button"><span class="visible-sm-inline visible-md-inline visible-lg-inline">Bookmarked</span><span class="caret"></span></button><ul class="dropdown-menu dropdown-menu-right" id="ul_menu"><li><input type="checkbox" name="aggiungidsfsdf" checked="">        dsfsdf</li><li><input type="checkbox" name="aggiungiasdas">     asdas<i class="fa fa-lock fa-1" aria-hidden="true"></i></li><li><input type="checkbox" name="aggiungicollaborativo">        collaborativo<i class="fa fa-lock fa-1" aria-hidden="true"></i></li><li><a href="#" id="aggiungi_bookmarked"><i class="fa fa-fw fa fa-plus"></i>Aggiungi Bookmarked</a></li></ul></div>

不要忘记类名后面的尖锐符号告诉jsdoc成员是实例成员而不是静态成员。