@use JSDoc

構文

概要

@memberof タグは、親シンボルに属するメンバーシンボルを識別します。

デフォルトでは、@memberof タグはメンバーシンボルをスタティックメンバーとして記述します。内側のメンバーやインスタンスメンバーの場合は、名前パスの後にスコープの記号付けを使用するか、@inner または @instance タグを追加できます。

「強制」@memberof タグ、@memberof! は、異なる親があるように見えても、オブジェクトを特定の親に属するものとして記述します。

次の例では、hammer 関数は通常はグローバル関数として記述されます。実際にはグローバル関数ですが、Tools 名前空間のメンバーでもあります。そして、これらをこの方法で記述します。解決策は @memberof タグを追加することです。

@memberof の使用
/** @namespace */
var Tools = {};

/** @memberof Tools */
var hammer = function() {
};

Tools.hammer = hammer;

クラスのインスタンスメンバーの場合、「@memberof ClassName.prototype」または「@memberof ClassName#」の構文を使用します。あるいは、「@memberof ClassName」を「@instance」タグと組み合わせることもできます。

@memberof をクラスのプロトタイプで使用
/** @class Observable */
create(
    'Observable',
    {
        /**
         * This will be a static member, Observable.cache.
         * @memberof Observable
         */
        cache: [],

        /**
         * This will be an instance member, Observable#publish.
         * @memberof Observable.prototype
         */
        publish: function(msg) {},

        /**
         * This will also be an instance member, Observable#save.
         * @memberof Observable#
         */
        save: function() {},

        /**
         * This will also be an instance member, Observable#end.
         * @memberof Observable
         * @instance
         */
        end: function() {}
    }
);

次の例では、強制 @memberof タグ、「@memberof!」を使用して、オブジェクト (Data#point) のプロパティを記述します。これは、クラス (Data) のインスタンスメンバーです。

@property タグを使用してプロパティを記述する場合、そのロングネームを使用してプロパティにリンクすることはできません。JSDoc に、「Data#point.y」は「Data#」のメンバー「point.y」、ではなく、「Data#」の「point」のメンバー「y」として記述されるべきであると伝えるために、「@alias」と「@memberof!」を使用して、プロパティをリンクできるように強制できます。

@memberof! をオブジェクトプロパティに使用
/** @class */
function Data() {
    /**
     * @type {object}
     * @property {number} y This will show up as a property of `Data#point`,
     * but you cannot link to the property as {@link Data#point.y}.
     */
    this.point = {
        /**
         * The @alias and @memberof! tags force JSDoc to document the
         * property as `point.x` (rather than `x`) and to be a member of
         * `Data#`. You can link to the property as {@link Data#point.x}.
         * @alias point.x
         * @memberof! Data#
         */
        x: 0,
        y: 1
    };
}