我正在重构一些我们拥有的Javascript代码,除此之外我还改变了它以利用揭示模块模式。代码看起来更整洁,它工作正常,但我在大纲视图中看不到这些功能。我将顶级命名空间var视为var,但您无法展开它以查看其中的函数。
让我们说代码看起来像这样:
function myFunc1() {}
function myFunc2() {}
在这种情况下,您会在大纲视图中看到这两个功能。但是如果你改成它:
var myNamespace = function()
{
function myFunc1() {}
function myFunc2() {}
return {
name: "myNamespace",
myFunc1: myFunc1,
myFunc2: myFunc2
}
}();
然后大纲视图只显示myNamespace var。我试过看但却找不到能够正确显示层次结构的视图。有没有人知道一种观察这种情况的方法,还是eclipse无法做到这一点?
答案 0 :(得分:23)
添加:
/**
* @memberOf myNamespace
*/
在每个函数定义之前恢复层次结构。
你会在这里找到更多有趣的标签来记录你的代码:
How I Introduced JsDoc into a JavaScript project – and found my Eclipse Outline
答案 1 :(得分:5)
一种方法是将其称为如下。 按原样定义它,但不要自行执行它。 确保原型是一个空对象,然后尝试调用它。 它的工作方式相同,但会恢复大纲,您无需在每个函数前添加注释。
var myNamespace = (function()
{
function myFunc1() {}
function myFunc2() {}
return {
name: "myNamespace",
myFunc1: myFunc1,
myFunc2: myFunc2
}
});
myNamespace.prototype = {};
myNamespace();
答案 2 :(得分: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的那些之外没有区别(但是如果我添加this.dummy;对于隐形函数它没有帮助)
这个半成品: myNameSpace.prototype = {}; myNameSpace对象;
但是你不能这样调用它的功能: myNameSpace.myFunc1();
答案 3 :(得分:0)
我正在使用eclipse / Kepler。使用上面的建议我设法得到大纲视图。但提案(Ctrl-space)不起作用。有些fn是可见的,有些则不是。没有要检测的模式。
在阅读http://usejsdoc.org/#JSDoc3_Tag_Dictionary之后,我用@memberof替换了所有@memberOf,现在一切都按预期工作(直到下一个问题出现......)