我正在尝试记录位于闭包内的名为User的类中的功能 - 如何使用JsDoc3?
这就是我所拥有的:
/**
@class User
@classdesc This is the class that describes each user.
*/
(function($){
var _defaults = {
'first_name': '',
'last_name': ''
};
/**
@constructor
*/
function User(options) {
this.options = $.extend({}, _defaults, options);
}
/**
@method
@desc Returns the combined first name and last name as a string
@returns {string}
*/
User.prototype.getName() = function(){
return this.options.first_name + this.options.last_name;
};
window.User = User;
}(jQuery));
答案 0 :(得分:2)
我用这种方法取得了成功。 (添加到样板插件中,因此包含MIT许可证注释)
在原型上查看@global + @class和@global的使用。 这似乎就是这样做的。
下面复制的代码: 享受&请把它做得更好。
/**
* jQuery lightweight plugin boilerplate
* Original author: @ajpiano
* Further changes, comments: @addyosmani
* Licensed under the MIT license
*/
;(function ( $, window, document, undefined ) {
var pluginName = "Application",
defaults = {
propertyName: "value"
};
/**
* @global
* @class Application
* @description MASTER: Sets up and controls the application
*
* @returns Object
*/
function Application( element, options ) {
this.element = element;
this.options = $.extend( {}, defaults, options) ;
this._defaults = defaults;
this._name = pluginName;
this.init();
window[pluginName] = this;
}
/** @global */
Application.prototype = {
/**
* @description call pre-life initialisations and tests here
*/
init: function() {
var that = this;
that._build();
that._setNotifications();
},
/**
@description Set up a pub sub for global notifications such a state-changes.
*/
_setNotifications: function(el, options) {
console.log('Application=>setNotifications()');
},
/**
@description All environment setup done we now call other plugins.
*/
_build: function(el, options) {
console.log('Application=>build()');
}
};
$.fn[pluginName] = function ( options ) {
return this.each(function () {
if (!$.data(this, "plugin_" + pluginName)) {
$.data(this, "plugin_" + pluginName,
new Application( this, options ));
}
});
};
})( jQuery, window, document );
答案 1 :(得分:1)
我不知道为什么jsdoc3决定忽略闭包中的文档,但至少有一种解决方法是使用@memberOf
标记来明确告诉方法属于哪个类:
/**
* @memberOf User
* Returns the combined first name and last name as a string
* @returns {string}
*/
User.prototype.getName = function(){
另外需要注意的是,您不需要使用@desc
和@classdesc
标记 - 这些标记由jsduc3本身自动添加,它更多是这些标记存在的实现细节
答案 2 :(得分:0)
在我的情况下,闭包在一个文件中,并使用字典导出其对象,因此在概述中使用@file和@exports DicName标记,并且字典的@namespace标记完成了记录它们的技巧。
/**
@file myFileWithClosure
@exports DicName
*/
(function($){
/** @namespace */
DicName = {};
...
不需要全球化。