@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 標籤來記錄屬性時,您無法使用其長名稱連結到該屬性。我們可以使用「@alias」和「@memberof!」來強制屬性可連結,以告訴 JSDoc Data#point.y 應記錄為「Data#」的成員「point.y」,而不是「Data#」的「point」的成員「y」。

將 @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
    };
}