【问题标题】:jsdoc-toolkit doesn't like my syntax?jsdoc-toolkit 不喜欢我的语法?
【发布时间】:2011-06-28 04:13:17
【问题描述】:

我是第一次使用 jsdoc,它似乎不喜欢我的语法,我找不到它喜欢的任何东西:

(function(){  // issue #1
    /**
     * Creates an instance of a Cube animation
     * @class
     */
    function Cube(x, y, z){
       ...
    }

    /** @lends Cube.prototype */
    cubeFrame.prototype = { // Issue #2
       ...
    }
})();

问题 #1:由于某种原因,我收到错误消息“警告:尝试将 someMethod 记录为未记录符号 Cube 的成员。”如果我把那个包装函数留在里面。如果我把它注释掉,它就可以工作。

问题 #2:我的课程有点奇怪,当我说 @lends Cube.prototype 将以下对象应用于 Cube 和不是cubeFrame。我收到与 #1 几乎相同的错误:“警告:尝试将 getVoxel 记录为未记录符号 cubeFrame 的成员。”。我不想记录cubeFrame,我希望它的原型进入Cube 文档。

我可以重新编写这两行代码并生成文档(然后是无效代码),但我不想每次进行更改时都必须重新编写代码来生成文档!

【问题讨论】:

    标签: javascript documentation jsdoc


    【解决方案1】:

    使用@name 标记让jsdoc 知道对象的名称,然后是类的名称,并将@lends 标记替换到对象字面量之前的右侧。喜欢:

    (function(){
        /**
         * Creates an instance of a Cube animation
         * @class
         * @name Cube
         */
        function Cube(){
           //...
        }
        cubeFrame.prototype = /** @lends Cube.prototype */{ // Issue #2
           //...
           /**
           */
           someMethod: function(){}
        };
    })()
    

    【讨论】:

    • 一个问题 - 为什么这里需要@name
    • 因为Cube是在一个函数内部定义的(在这种情况下,它是一个匿名函数,它会尝试做文档Cube“inside”(不记得符号),它们是@name Cude导致它妥善记录。
    • 正如 Prusse 正确所说,JSDoc 无法找到“Cube”函数的名称(意思是完整的全局定义的变量名称),因为它被定义为一个范围内的内部函数匿名函数。因此,从该匿名函数之外,无法访问名为“Cube”的东西。 @name 标记告诉 JSDoc 您希望记录该函数,就好像它有一个“Cube”的 global 名称,就像它在浏览器中被定义和访问为 window.Cube。令人困惑的是,记录在案的全局名称和实际的内部名称恰好是同一个词。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    • 2018-06-26
    • 1970-01-01
    • 2015-12-26
    相关资源
    最近更新 更多