这里有一个构造函数 A
,它会创建实例并提供两个方法:printThing
和 printBall
。我使用 JSDoc 来记录这些方法:
var A = function () {
/**
* Prints 'Thing'
* @param {Number} N - The number of times to print.
*/
this.printThing = function (N) {
var i = 0;
while (i < N) {
console.log('Thing');
i++
}
};
/**
* Prints 'Ball'
* @param {Number} N - The number of times to print.
*/
this.printBall = function (N) {
var i = 0;
while (i < N) {
console.log('Ball');
i++
}
};
};
这里有一个等效的构造函数,可以动态生成与此相同的方法:
var A = function () {
var me = this;
var registerPrinter = function (name) {
me['print' + name] = function (N) {
var i = 0;
while (i < N) {
console.log(name);
i++;
}
};
};
registerPrinter('Thing');
registerPrinter('Ball');
}
两个构造函数生成的实例的行为是相同的:
> var a = new A();
> a.printBall(4);
Ball
Ball
Ball
Ball
我该如何使用JSDoc来记录第二个A构造函数中生成的方法?
编辑:registerPrinter在构造函数的范围内是私有的。它可以(并且应该)被记录,但它只是在内部使用。这个问题是关于记录A实例的公共接口的。