17

我目前正在重构我们拥有的一些 Javascript 代码,除此之外,我已经对其进行了更改以利用显示模块模式。代码看起来更整洁,工作正常,但我在大纲视图中看不到这些功能。我将顶级命名空间 var 视为 var,但您无法扩展它以查看其中的函数。

假设以前的代码看起来像这样:

function myFunc1() {}
function myFunc2() {}

在这种情况下,您可以在大纲视图中看到这两个功能。但是如果你把它改成这样:

var myNamespace = function()
{
  function myFunc1() {}
  function myFunc2() {}

  return {
    name: "myNamespace",
    myFunc1: myFunc1,
    myFunc2: myFunc2
  }
}();

然后大纲视图只向您显示 myNamespace 变量。我尝试过寻找,但找不到真正能正确显示层次结构的视图。有谁知道查看这个的方法,或者是 Eclipse 无法做到这一点的情况?

4

4 回答 4

23

添加:

/**
 * @memberOf myNamespace
 */

在每个函数定义之前恢复层次结构。

您将在此处找到更多有趣的标签来记录您的代码:
我如何将 JsDoc 引入 JavaScript 项目 - 并找到了我的 Eclipse 大纲

于 2012-06-16T09:17:47.210 回答
5

一种方法是如下调用它。按原样定义它,但不要自行执行它。确保原型是一个空对象,然后尝试调用它。它的工作方式相同,但会恢复大纲,您无需在每个函数前添加注释。

var myNamespace = (function()
{
  function myFunc1() {}
  function myFunc2() {}

  return {
    name: "myNamespace",
    myFunc1: myFunc1,
    myFunc2: myFunc2
  }
});
myNamespace.prototype = {};
myNamespace();
于 2012-08-21T19:18:27.590 回答
2

在大纲中未显示 myFunc1() 等似乎是一个在 3.2 中标记为已修复的错误。但是,它在 4.2 中并未修复。在处理包含数百个函数的非常大的文件时,这当然是一个巨大的痛苦,并且只有 var 名称显示在大纲中。我祈祷它被修复。

https://bugs.eclipse.org/bugs/show_bug.cgi?id=236202

https://bugs.eclipse.org/bugs/show_bug.cgi?id=281374#c1

/** * @memberOf myNamespace */ 对我不起作用。当我在 myFunc1() 上方添加它时,即使我关闭并打开文件,它也不会在大纲中显示它。

有趣的是,我的 20 个左右的函数中有 4 个确实出现在大纲中,但是有效的和无效的没有区别,除了有效的都包含 this.xxx (但如果我添加这个.dummy;对于不可见的功能,它没有帮助)

这个半作品: myNameSpace.prototype = {}; 我的名字空间;

但是你不能这样调用它的函数:myNameSpace.myFunc1();

于 2013-01-24T22:57:30.913 回答
0

我正在使用 Eclipse/Kepler。使用上面的建议,我设法获得了大纲视图。但是提案(Ctrl-空格)不起作用。有些 fn 可见,有些不可见。没有要检测的模式。

阅读http://usejsdoc.org/#JSDoc3_Tag_Dictionary后,我将所有 @memberOf 替换为 @memberof,现在一切都按预期工作('直到出现下一个问题......)

于 2013-12-05T22:30:23.107 回答