我有一个大型、结构良好的JavaScript对象,类似于以下内容:
实际上,最外层的闭包用于控制内部闭包看到的全局范围,该闭包实现了一种模块模式:内部函数实际上是构造函数,其嵌套函数实际上是方法,返回的对象实际上是“公共”部分的列表。
JSDoc 不支持此模式。
(记录一下,我使用的是 JSDoc 3.4。)
我在这段代码的许多地方尝试了几个变体,包括 @lend、@export、@namespace 和 @memberof,但无论我做什么,JSDoc 都不会注意到任何内部函数 - 它不仅“不将它们与正确的东西相关联”;它根本不在任何输出文件中包含它们。
这是一个优秀的模式,可以紧密封装经典的 JavaScript,不仅封装其内部,而且封装其依赖项,我们的真实应用程序在许多许多千行代码中使用这种模式。因此,我们的 JavaScript 结构不会很快改变:只有注释可以合理地更改。
我希望能够使用JSDoc来记录此应用程序,但无论我提供什么,JSDoc都会失败。在StackOverflow上搜索发现了处理各种知名模块系统的方法,但对于使用多重嵌套闭包的纯JavaScript,我没有找到确定的答案。
因此,有人知道如何使JSDoc正确生成
/**
* My 'class' begins here. JSDoc barfs on this.
*/
var MyClass = (function(window, document, $) {
return function(options) {
"use strict";
var
x = 123,
/**
* This is a "public" function.
*/
myFunc = function() { /*...*/ },
/**
* This is some other "private" function.
*/
otherFunc = function() { /*...*/ };
return {
myFunc: myFunc
};
};
})(window, document, window.jQuery);
实际上,最外层的闭包用于控制内部闭包看到的全局范围,该闭包实现了一种模块模式:内部函数实际上是构造函数,其嵌套函数实际上是方法,返回的对象实际上是“公共”部分的列表。
JSDoc 不支持此模式。
(记录一下,我使用的是 JSDoc 3.4。)
我在这段代码的许多地方尝试了几个变体,包括 @lend、@export、@namespace 和 @memberof,但无论我做什么,JSDoc 都不会注意到任何内部函数 - 它不仅“不将它们与正确的东西相关联”;它根本不在任何输出文件中包含它们。
这是一个优秀的模式,可以紧密封装经典的 JavaScript,不仅封装其内部,而且封装其依赖项,我们的真实应用程序在许多许多千行代码中使用这种模式。因此,我们的 JavaScript 结构不会很快改变:只有注释可以合理地更改。
我希望能够使用JSDoc来记录此应用程序,但无论我提供什么,JSDoc都会失败。在StackOverflow上搜索发现了处理各种知名模块系统的方法,但对于使用多重嵌套闭包的纯JavaScript,我没有找到确定的答案。
因此,有人知道如何使JSDoc正确生成
MyClass
作为“类似”的结构,并将深度嵌套在其中的函数作为该“类”的“方法”?我可以将otherFunc
标记为@private
之类的标记以将其标记为隐藏,或者将myFunc
标记为@public
之类的标记以将其标记为可见,但无论我尝试什么,JSDoc似乎都不想记录任何这些嵌套函数。