Javascript 使用JSDOC记录作用域

Javascript 使用JSDOC记录作用域,javascript,jquery,jsdoc,Javascript,Jquery,Jsdoc,我很难用JSDOC来记录作用域,任何人都知道记录以下代码的正确方法: (现在,jsdoc生成全局函数中的所有方法,它们应该属于WorkAreaPlugin) 首先,我要指出,用jsdoc记录JavaScript代码通常归结为一个惯例问题,以及您希望如何向阅读文档的人展示JS实体之间的关系。下面是一个可能的答案 以下内容将把所有内容放在一个名称空间中: /** * @namespace Retalix.StoreOfficeClient.Web.Scripts.General.WorkArea.

我很难用JSDOC来记录作用域,任何人都知道记录以下代码的正确方法:

(现在,jsdoc生成全局函数中的所有方法,它们应该属于WorkAreaPlugin)


首先,我要指出,用jsdoc记录JavaScript代码通常归结为一个惯例问题,以及您希望如何向阅读文档的人展示JS实体之间的关系。下面是一个可能的答案

以下内容将把所有内容放在一个名称空间中:

/**
 * @namespace Retalix.StoreOfficeClient.Web.Scripts.General.WorkArea.WorkAreaPlugin
 *
 */
(/** @lends Retalix.StoreOfficeClient.Web.Scripts.General.WorkArea.WorkAreaPlugin */ function ($, undefined) {

/**
 * Description
 * @constructor
 * @param {} options
 */
var ctor = function (options) {
    var self = this;
    var _data;
    var _new;
    var _grids = {};

    if (this.setupAjaxCrud) {
        this.setupAjaxCrud();
    }

    $.extend(self,
             /** @lends Retalix.StoreOfficeClient.Web.Scripts.General.WorkArea.WorkAreaPlugin~ctor# */ {
        /**
         * Sets the data property of the current scope and setups the set_isDirty and the get_isDirty functions if not exist to the data object
         * @param {} data
         * @param {} triggerChange
         */
        set_data: function (data, triggerChange) {
            _data = data || {};
            if (!_data.set_isDirty) {
                $.setupDirtyFunctions(_data);
            }
            if (triggerChange !== false) {
                self.trigger("dataChanged", [_data, self]);
            }
        }
    });

    this.bind("login", function () {
        var isDirty = self.isDirty();
        if (!isDirty && self.loader && $.isFunction(self.loader.doLoading)) {
            self.reload();
        }
    });
};

StoreOfficeClient.Plugins.Register("workArea", undefined, undefined, ctor);

})(jQuery);

您使用的是什么版本的jsdoc?我不记得曾见过为3.x系列编写的
@scope
。(但文档有时是有缺陷的。)我使用jsdoc3.3.0,我在这里看到了@scope选项:但它对我不起作用。你将如何记录这一点?(即使没有@scope)您看到的文档是针对jsdoc 2.x.ok的,那么如何推荐这样做呢。我忘了早些时候提到这件事了。不要使用JSDOC3.3.0,因为它仍然是alpha和bug,请使用3.2.x系列中的最新版本。(我想你已经看到我提交了一个答案。)jsdoc输出它就像ctor是一个类一样(在类下面有ctor),ctor只是一个构造函数。另外,我不希望它被称为类,我是否有机会告诉jsdoc WorkAreaPlugin是上述名称PCAE中的一个插件?jsdoc对“构造函数”和“类”的概念没有区别。请参阅文档:它的同义词是
@class
。jsdoc没有“插件”的概念。您可以将
ctor
set_data
设置为与插件对应的命名空间的常规函数。
/**
 * @namespace Retalix.StoreOfficeClient.Web.Scripts.General.WorkArea.WorkAreaPlugin
 *
 */
(/** @lends Retalix.StoreOfficeClient.Web.Scripts.General.WorkArea.WorkAreaPlugin */ function ($, undefined) {

/**
 * Description
 * @constructor
 * @param {} options
 */
var ctor = function (options) {
    var self = this;
    var _data;
    var _new;
    var _grids = {};

    if (this.setupAjaxCrud) {
        this.setupAjaxCrud();
    }

    $.extend(self,
             /** @lends Retalix.StoreOfficeClient.Web.Scripts.General.WorkArea.WorkAreaPlugin~ctor# */ {
        /**
         * Sets the data property of the current scope and setups the set_isDirty and the get_isDirty functions if not exist to the data object
         * @param {} data
         * @param {} triggerChange
         */
        set_data: function (data, triggerChange) {
            _data = data || {};
            if (!_data.set_isDirty) {
                $.setupDirtyFunctions(_data);
            }
            if (triggerChange !== false) {
                self.trigger("dataChanged", [_data, self]);
            }
        }
    });

    this.bind("login", function () {
        var isDirty = self.isDirty();
        if (!isDirty && self.loader && $.isFunction(self.loader.doLoading)) {
            self.reload();
        }
    });
};

StoreOfficeClient.Plugins.Register("workArea", undefined, undefined, ctor);

})(jQuery);