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