@param
标记允许记录属性,例如
/**
* @param {Object} userInfo Information about the user.
* @param {String} userInfo.name The name of the user.
* @param {String} userInfo.email The email of the user.
*/
我如何记录@this标签的属性?
/**
* @this {Object}
* @param {String} this.name The name of the user.
* @param {String} this.email The email of the user.
*/
我想知道是否有人在该项目上工作。 (文档仍在创建中......)
答案 0 :(得分:47)
要记录实例成员,请使用@name Class#member
:
/**
Construct a new component
@class Component
@classdesc A generic component
@param {Object} options - Options to initialize the component with
@param {String} options.name - This component's name, sets {@link Component#name}
@param {Boolean} options.visible - Whether this component is vislble, sets {@link Component#visible}
*/
function Component(options) {
/**
Whether this component is visible or not
@name Component#visible
@type Boolean
@default false
*/
this.visible = options.visible;
/**
This component's name
@name Component#name
@type String
@default "Component"
@readonly
*/
Object.defineProperty(this, 'name', {
value: options.name || 'Component',
writable: false
});
}
这导致文档中的成员部分列出了每个成员,其类型,默认值以及它是否为只读。
jsdoc@3.3.0-alpha3生成的输出如下所示:
另见:
答案 1 :(得分:4)
使用@property
标记来描述对象的属性。
@param
用于定义方法或构造函数的参数。
@this
用于定义this
引用的对象。
所以这是使用JSDOC 3的一个例子。
/**
* @class Person
* @classdesc A person object that only takes in names.
* @property {String} this.name - The name of the Person.
* @param {String} name - The name that will be supplied to this.name.
* @this Person
*/
var Person = function( name ){
this.name = name;
};
JSDOC 3:https://github.com/jsdoc3/jsdoc
答案 2 :(得分:1)
在类的构造函数中,jsdoc将自己实现所记录的属性属于类intances。所以这应该足够了:
/**
* @classdesc My little class.
*
* @class
* @memberof module:MyModule
* @param {*} myParam Constructor parameter.
*/
function MyLittleClass(myParam) {
/**
* Instance property.
* @type {string}
*/
this.myProp = 'foo';
}
如果jsdoc不清楚该函数是类构造函数,您可以使用@this
来定义this
引用的内容:
/**
* @classdesc My little class.
*
* @class
* @memberof module:MyModule
* @name MyLittleClass
* @param {*} myParam Constructor parameter.
*/
// Somewhere else, the constructor is defined:
/**
* @this module:MyModule.MyLittleClass
*/
function(myParam) {
/**
* Instance property.
* @type {string}
*/
this.myProp = 'foo';
}