我有一个特殊的JS揭示模块模式,如下例所示,我正在尝试使用JSDoc 3进行文档编制。
情况类似于this和this,但我的构造函数有参数,并且没有原型根变量。
如果我将@class与@param一起放入配置中,这似乎是最正确的替代方案,它可以正常工作(描述,作者和依赖关系都已正确编写)但我必须放置@ instance / @ memberof / @名称在每个原型成员中,这非常令人讨厌。
如果我在构造函数中放置@constructor,则会正确识别每个成员,但会将构造函数记录两次。
然后,如果我从My Module中删除@class,则不会出现描述@author和@requires。将@lends放入My Module和@constructs in Constructor会产生相同的效果。
更改代码不是一种选择,它是我公司广泛使用的模式。
如何进行?
var Root = window.Root || {};
/**
* My module
*
* @author ...
* @requires DependencyOne
* @requires DependencyTwo
*/
Root.MyModule = (function(DepOne, DepTwo) {
var _private = {/*...*/};
/**
* Constructor
*
* @param {Object} config
* @param {String} config.prop
*/
function MyModule(config) {
this.config = config;
}
/**
* My attribute
*
* @type {String}
*/
MyModule.prototype.myAttribute = null;
/**
* My function
*
* @param {String} param
* My parameter
*/
MyModule.prototype.myFunction = function(param) {/*...*/}
return MyModule;
})(DependencyOne, DependencyTwo);
解决方案:经过一些测试后,我使用@class
/ @constructor
和@memberof
找出了如何继续:
var Root = window.Root || {};
Root.MyModule = (function(DepOne, DepTwo) {
var _private = {/*...*/};
/**
* Constructor.
*
* @constructor
* @memberof Root
*
* @requires DependencyOne
* @requires DependencyTwo
*
* @param {Object} config My config
* @param {String} config.prop Property
*/
function MyModule(config) {
this.config = config;
}
/**
* My attribute
*
* @type {String}
*/
MyModule.prototype.myAttribute = null;
/**
* My function
*
* @param {String} param
* My parameter
*/
MyModule.prototype.myFunction = function(param) {/*...*/}
return MyModule;
})(DependencyOne, DependencyTwo);