5

我有一个通过定义一些实例属性的类,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 时,我得到了mymoduleExamplefoo和的输出bar,但没有得到foobar。如果我删除 的@memberof标签foobar,它将被注册为全局。我已经尝试过@memberof mymmodule~Example,添加@lendsObject.defineProperties调用和传递给它的对象,并将其转换为Object.defineProperty,但结果没有改变。

我怎样才能证明foobar属于Example

4

3 回答 3

8

在挖掘了我能找到的每个示例之后,我终于组装了必要的咒语——@memberof确实是诀窍,但 JSDoc 似乎要求在名称路径中使用的模块必须明确标记为这样。以下工作完美:

/** A foo and a bar
  *
  * @type String
  * @instance
  * @memberof module:mymodule~Example
  */
于 2012-09-18T15:30:12.660 回答
1

您也可以尝试使用@lends 注释代替@memberOf,如下所示:

Object.defineProperties(this, /** @lends Example# */{
    /** A foo and a bar */
    foobar: { enumerable: false, value: foo + bar, writable: false }
});

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

于 2016-09-29T09:32:35.163 回答
0

在摆弄了几个小时后,我终于可以使用它了@memberOf!。注意大写的“O”和爆炸“!”

/**
 * Description
 * @memberOf! MyClass
 * @type {String}
 */
var myString;
于 2013-05-24T15:00:51.470 回答