如何告诉JSDoc我正在传递一个名称空间对象作为参数?

时间:2013-10-12 23:21:25

标签: javascript namespaces documentation jsdoc

我正在使用匿名函数将方法添加到命名空间对象。最后,我希望JSDoc(版本3.3)为MyNamespace.func1()MyNamespace.func2()等生成文档。我想我可以将此信息添加到函数中定义的每个方法中,但它会让JSDoc3认识到nsMyNamespace相同,会容易得多。我该怎么做?

/** @namespace */
var MyNamespace = {};

// (... some code that adds to MyNamespace ...)

(function (ns) {

    /** Method description 1 */
    ns.func1 = function (val) {};

    /** Method description 2 */
    ns.func2 = function (val) {};

    // ...etc

})(MyNamespace);

2 个答案:

答案 0 :(得分:1)

您可以在 aliases 的JSDoc文档中看到类似场景的示例,请参阅&#34;对命名空间的静态成员使用@alias&#34; < / p>

答案 1 :(得分:0)

显然,JSDoc 3尚未实现这一点。

我最终使用了merge / extend / augment-type辅助函数,如下所示:

(function (ns) {

    extend(ns, /** @lends ns */ {

        /** Method description 1 */
        func1: function (val) {},

        /** Method description 2 */
        func2: function (val) {},

        // ...etc
    });

})(MyNamespace);

这为JSDoc提供了创建适当文档所需的一切。一个小缺点是func1现在将在Chrome错误控制台堆栈跟踪中显示为extend.func1