5

を介していくつかのインスタンス プロパティを定義するクラスがあり、JSDoc 3にそれらがクラスに属していることを認識させるのObject.definePropertiesが非常に困難です。

ここに私が取り組んでいるものの簡略化されたバージョンがあります:

/** @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.definePropertiesObject.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

次のように @memberOf の代わりに @lends アノテーションを試すこともできます。

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 に答える