2014-10-07 51 views
0

如何记录下面的代码片段?当我离开它,因为它是Foo.bar没有说明。当我添加@memberof标记时,它将记录为静态属性。添加@instance标签不会改变任何内容。这是相当简单和常见的代码模式,所以它应该很容易记录,对吗? 我讨厌jsdoc ...如何在自调用函数中记录简单的类?

/** 
* @namespace 
*/ 
var ns; 

(function (ns) { 
    'use strict'; 

    /** 
    * Constructs class 
    * @class ns.Foo 
    */ 
    function Foo() { 
    } 

    /** 
    * Blabla 
    */ 
    Foo.prototype.bar = function() { 

    }; 

    ns.Foo = Foo; 

})(ns || (ns = {})); 

回答

2

使用@lends告诉jsdoc你在函数中拥有的属于你的名字空间。通过这种方式,您无需在任何地方用@memberof胡言乱语。以下作品当我在这里运行时:

/** 
* @namespace 
*/ 
var ns; 

(/** @lends ns */ function (ns) { 
    'use strict'; 

    /** 
    * Constructs class 
    * @class 
    */ 
    function Foo() { 
    } 

    /** 
    * Blabla 
    */ 
    Foo.prototype.bar = function() { 

    }; 

    ns.Foo = Foo; 

})(ns || (ns = {})); 
+0

现在,它的工作。我早一定错过了一些东西。然而,在生成文档的@JayKuri解决方案中,类名为ns.Foo,而在你的 - ns〜Foo中。我不确定有什么区别。 – jesper 2014-10-07 17:43:09

+1

我忘了这个细节。在'ns.Foo'中,符号'Foo'被理解为静态成员,而在'ns〜Foo'中则是一个内部成员。 (文档是[here](http://usejsdoc.org/about-namepaths.html))。我会说'ns.Foo'更好。但是,没有办法让'@ lends'来产生这个名字。 (我试了。)这个问题已经被报道,所以我希望新版本能够升级'@ lends'来正确处理它。我宁愿忍受不正确的表示法,并相信当问题得到解决时,升级将是无痛的,而不必在我庞大的代码库中编写'@ memberof'。 – Louis 2014-10-07 17:57:21

+0

你能分享一个你提到的问题的链接吗?我找不到它。 – jesper 2014-10-07 18:12:35

1

我认为你需要做的就是添加@function和@memberof除了@instance什么。这告诉jsdoc它是什么,它适合在哪里:

/** 
* Blabla 
* @function bar 
* @memberof ns.Foo 
* @instance 
*/ 
Foo.prototype.bar = function() { 

}; 

我发现jsdoc钝......以及挂在那里。 :-)

+0

谢谢,它的作品,虽然对我来说它是FUBAR。在我所有的项目中,猜测正确的jsdoc标签需要比应该多的时间。此外,jsdoc片段应该带有文档,但现在它拥有大量无意义的标签。正如我伤心:我讨厌它 - 有没有更好的方法来记录JS文档? – jesper 2014-10-07 16:20:08

+0

不确定。我发现NaturalDocs(http://www.naturaldocs.org)更具可预测性,但它的表现有点局限,我不认为它正在积极维护。 jsduck(https://github.com/senchalabs/jsduck)看起来很有趣,但我没有真正玩过它。我的问题是,我已经玩过很多次的javascript模块,创建一个专门用于javascript的模块,并且更好地解决问题......但是,我还有其他工作要做。如果你发现你更喜欢的东西,请告诉我。 – JayKuri 2014-10-07 16:29:59

相关问题