【问题标题】:javascript jsdoc namespace class static methodjavascript jsdoc命名空间类静态方法
【发布时间】:2014-11-13 19:33:39
【问题描述】:

我正在尝试在我想要定义的 js 代码上使用 jsDoc: - 命名空间。 - 一类。 - 静态方法。 请注意,代码在运行时完全符合我的预期,但是我在开始使用 jsDoc 时遇到问题,所以我质疑自己代码是否正确......

/** @namespace
 * @name myNamespace
 * @description myNamespace description.
 */
if (typeof (myNamespace) == "undefined") myNamespace = { };

/** @class 
 * @name myClass
 * @description myClass description.
 * @memberof myNamespace
 * @inner
 */
myNamespace.myClass = function () { };

/** @method
 * @name myStaticMethod
 * @description myStaticMethod description.
 * @param {String} myParam. Required. myParam description.
 * @return myReturnValue description.
 * @remarks remarks description.
 * @memberof myNamespace.myClass
 * @inner
 */
myNamespace.myClass.myStaticMethod = function (myParam) {
    var myReturnValue = myParam;
    return myReturnValue;
};

当我使用 jsDoc 生成时,我在索引中看到: - 更正 myNamespace 定义。 - 更正 myClass 定义。 当我进入 myClass 时,我看不到 myStaticMethod... myStaticMethod 不存在于任何地方。 我的 JS 编码正确吗? 如果编码正确... cmets 是否正确写入? 怎么了?

非常感谢...

【问题讨论】:

  • 旁注:typeof 是运算符,不是函数;值周围不需要括号,出于同样的原因,您可以只写 1 + 2 而不是 (1) + (2)new ClassName() 而不是 new (ClassName())
  • 另外,您的代码依赖于The Horror of Implicit Globals 来创建myNamespace。更好的方法是:var myNamespace;(如果它已经存在则根本没有效果),然后是 typeof 测试。
  • 谢谢,我会记住并尝试重构代码...

标签: javascript class static namespaces jsdoc


【解决方案1】:

如果你要使用@name,你需要告诉JsDoc这个成员是什么;使用 @name 告诉 JsDoc完全忽略上下文。

在你的情况下,我认为你需要添加@static(你已经有@memberof,这很好)。

【讨论】:

    【解决方案2】:

    T.J. Crowder 是对的,我不能投票,因为我在社区还很年轻,如果有人需要,这是 jsDoc 的更正代码 cmets:

    /** @namespace
     * @name myNamespace
     * @description myNamespace description.
     */
    if (typeof (myNamespace) == "undefined") myNamespace = { };
    
    /** @class 
     * @name myNamespace.myClass
     * @description myClass description.
     * @memberof myNamespace
     * @inner
     */
    myNamespace.myClass = function () { };
    
    /** @function
     * @static
     * @name myNamespace.myClass.myStaticMethod
     * @description myStaticMethod description.
     * @param {String} myParam. Required. myParam description.
     * @return myReturnValue description.
     * @remarks remarks description.
     * @memberof myNamespace.myClass
     * @inner
     */
    
    myNamespace.myClass.myStaticMethod = function (myParam) {
        var myReturnValue = myParam;
        return myReturnValue;
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-09
      • 2010-11-28
      • 1970-01-01
      • 2012-08-10
      • 1970-01-01
      相关资源
      最近更新 更多