構文
@memberof <親の名前パス>
@memberof! <親の名前パス>
概要
@memberof タグは、親シンボルに属するメンバーシンボルを識別します。
デフォルトでは、@memberof タグはメンバーシンボルをスタティックメンバーとして記述します。内側のメンバーやインスタンスメンバーの場合は、名前パスの後にスコープの記号付けを使用するか、@inner または @instance タグを追加できます。
「強制」@memberof タグ、@memberof! は、異なる親があるように見えても、オブジェクトを特定の親に属するものとして記述します。
例
次の例では、hammer
関数は通常はグローバル関数として記述されます。実際にはグローバル関数ですが、Tools
名前空間のメンバーでもあります。そして、これらをこの方法で記述します。解決策は @memberof タグを追加することです。
/** @namespace */
var Tools = {};
/** @memberof Tools */
var hammer = function() {
};
Tools.hammer = hammer;
クラスのインスタンスメンバーの場合、「@memberof ClassName.prototype」または「@memberof ClassName#」の構文を使用します。あるいは、「@memberof ClassName」を「@instance」タグと組み合わせることもできます。
/** @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!」を使用して、プロパティをリンクできるように強制できます。
/** @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
};
}