@memberof

.. @memberof::
语法
  • @memberof <parentNamepath>

  • @memberof! <parentNamepath>

概述

@memberof标记标识属于父符号的成员符号.

By default, the @memberof tag documents member symbols as static members. For inner and instance members, you can use scoping punctuation after the namepath, or you can add the @inner or @instance tag.

“强制”@memberof标记@memberof!强制将对象记录为属于特定父级, 即使它看起来具有不同的父级.

示例

在下面的例子中, ``hammer``函数通常被记录为全局函数. 这是因为, 事实上, 它是一个全局函数, 但它也是``Tools``命名空间的成员, 这就是你希望如何记录它. 解决方案是添加@memberof标记:

Using @memberof
/** @namespace */
var Tools = {};

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

Tools.hammer = hammer;

在下面的示例中, ``hammer``函数通常记录为全局函数. 这是因为, 事实上, 它是一个全局函数, 但它也是``Tools``命名空间的成员, 这就是你想要记录它的方式. 解决方案是添加@memberof标记:

Using @memberof with a class prototype
/** @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)的实例成员的对象(Data#point)的属性.

使用@property标记来记录属性时, 无法使用其长名称链接到该属性. 我们可以通过使用“@alias”和“@memberof!”强制属性可以链接, 告诉JSDoc Data#point.y应该记录为“Data#”的成员“point.y”, 而不是成员“数据#”的“点”的“y”.

Using @memberof! for object properties
/** @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
    };
}