Javascript 在闭包中注释私有函数
如何在闭包中注释这个名为bar的私有函数Javascript 在闭包中注释私有函数,javascript,annotations,closures,google-closure-compiler,jsdoc,Javascript,Annotations,Closures,Google Closure Compiler,Jsdoc,如何在闭包中注释这个名为bar的私有函数 var Foo = (function() { var fn = (function() { return { bar: function(baz) { alert(baz); } }; })(); return { doBar: function(label) { fn.bar(
var Foo = (function() {
var fn = (function() {
return {
bar: function(baz) {
alert(baz);
}
};
})();
return {
doBar: function(label) {
fn.bar(label);
}
}
});
像这样
/**
* @type {function(string): string}
* @private
*/
bar: function(baz) {
return baz;
}
还是这样
/**
* @param {string}
* @private
* @return {string}
*/
bar: function(baz) {
return baz;
}
甚至是两个文档的组合?但是我会复制函数参数和返回类型的信息
/**
* @param {string}
* @private
* @type {function(string): string}
* @return {string}
*/
bar: function(baz) {
return baz;
}
完整的jsDoc示例,用于整个闭包示例。“private”函数不再有@private jsDoc(如“John”所说)
看起来你的样品有问题。函数中的标签不起任何作用。你的意思是:var fn=(function(){return{bar:function(baz){return baz;}};})();还有,在这种情况下,你希望“@private”是什么意思?首先,这只是一个例子,但让我提醒标签,让它更清楚。对于@private,我的意思是,bar函数确实在私有范围内,不能从Foo实例外部访问。Foo.bar('bazz')是不可能的,而Foo.doBar('bazz')是可以访问的。我想你误解了。您的“var fn”未定义。为定义它而执行的函数没有返回值。实际上,您有一个带标签的语句。您需要的是返回名为bar的对象文字:return{'bar':…};AFAIK闭包的“@private”是基于文件的(它只能被认为是文件的私有,而不是实例的私有)。在您的示例中,没有必要注释方法“@private”,因为它在结构上是通过定义“Foo”的方式隐藏的。没有一个对象(假设它被更正为您想要的)包含属性“bar”的公开对象。事实上,我忘了返回它。更正了。
/**
* @type {function(): Object}
* @public
*/
var Foo = (function() {
/**
* @type {function(): Object}
* @private
*/
var fn = (function() {
return {
/**
* @param {string} baz Something to alert
*/
bar: function(baz) {
alert(baz);
}
};
})();
return {
/**
* @param {string} label A label string
* @public
*/
doBar: function(label) {
fn.bar(label);
}
}
});