我有一个通过Object.defineProperties
定义一些实例属性的类,我很难让JSDoc 3认识到他们属于他们的班级。
以下是我正在使用的简化版本:
/** @exports mymodule */
function mymodule(exports) {
/** @constructor
* @param {String} foo A foo.
* @param {String} bar A bar.
* @classdesc Has a foo and a bar.
*/
function Example(foo, bar) {
Object.defineProperties(this, {
/** A foo and a bar
* @memberof Example
*/
foobar: { enumerable: false, value: foo + bar, writable: false }
});
}
exports.Example = Example;
}
当我运行JSDoc时,我获得mymodule
,Example
,foo
和bar
的输出,但不是foobar
。如果我删除了@memberof
的{{1}}标记,则会将其注册为全局标记。我已尝试foobar
,将@memberof mymmodule~Example
添加到@lends
调用和传递给它的对象,并将其转换为Object.defineProperties
,但结果不会更改。
如何将Object.defineProperty
归档为属于foobar
?
答案 0 :(得分:8)
在深入研究我能找到的每个例子后,我终于收集了必要的咒语 - @memberof
确实是诀窍,但JSDoc似乎要求在名称路径中使用的模块明确标记为这样。以下工作完美:
/** A foo and a bar
*
* @type String
* @instance
* @memberof module:mymodule~Example
*/
答案 1 :(得分:0)
在摆弄了好几个小时之后,我终于让它与@memberOf!
一起工作了。注意大写的“O”和爆炸“!”
/**
* Description
* @memberOf! MyClass
* @type {String}
*/
var myString;
答案 2 :(得分:0)
您还可以尝试使用@lends注释代替@memberOf:
div class="btn-group open"><button id="bookmarked_button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="true" type="button"><span class="visible-sm-inline visible-md-inline visible-lg-inline">Bookmarked</span><span class="caret"></span></button><ul class="dropdown-menu dropdown-menu-right" id="ul_menu"><li><input type="checkbox" name="aggiungidsfsdf" checked=""> dsfsdf</li><li><input type="checkbox" name="aggiungiasdas"> asdas<i class="fa fa-lock fa-1" aria-hidden="true"></i></li><li><input type="checkbox" name="aggiungicollaborativo"> collaborativo<i class="fa fa-lock fa-1" aria-hidden="true"></i></li><li><a href="#" id="aggiungi_bookmarked"><i class="fa fa-fw fa fa-plus"></i>Aggiungi Bookmarked</a></li></ul></div>
不要忘记类名后面的尖锐符号告诉jsdoc成员是实例成员而不是静态成员。