2013-02-28 35 views
3

我正在试图在位于闭包内的称为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)); 

回答

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本身自动添加的,它更是一个实现细节的,这些标签EXI一切。

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); 
0

在我的情况下,关闭是在一个单一的文件,并使用字典出口因此使用概述中的@file和@exports DicName标记和字典的@namespace标签并在特殊的对象让他们记录。

/** 
    @file myFileWithClosure 
    @exports DicName 
*/ 
(function($){ 

    /** @namespace */ 
    DicName = {}; 

    ... 

没有全球所需。