JSDoc和JavaScript属性getter和setter

eno*_*ufs 4 javascript getter-setter jsdoc

我希望我的代码,如下所示,可以使用JSDoc(v2.4.0)生成描述对象文字的每个属性的文档,但它不起作用.有谁知道如何使用JSDoc从使用getter/setter的代码生成文档?

/** Enum of days of week. */
var Day = {
    /** Sunday. */
    get Sun() { return 0; },
    /** Monday. */
    get Mon() { return 1; },
    /** Thuesday. */
    get Tue() { return 2; },
    /** Wednesday. */
    get Wed() { return 3; },
    /** Thursday. */
    get Thu() { return 4; },
    /** Friday. */
    get Fri() { return 5; },
    /** Saturday. */
    get Sat() { return 6; }
}
Run Code Online (Sandbox Code Playgroud)

jac*_*rld 8

使用@type记录的JavaScript getset存取.像下面这样的东西应该适用于JSDoc:

    /**
     * Sunday.
     * @type {number}
     */
    get "Sun"() { return 0; },
    /**
     * Monday.
     * @type {number}
     */
    get "Mon"() { return 1; },
Run Code Online (Sandbox Code Playgroud)

这会将每个属性记录为类型为的成员number.


Lea*_*yes 1

您可以使用 jQuery 风格的 getter/setter 方法:

/**
 * Get colour of object
 * @returns {mixed}
 *//**
 * Set colour of object
 * @param {mixed} val
 * @returns {this}
 */
colour: function(val) {
    if (val === undefined)
       return this.colour;
    else {
       this.colour = val;
       return this;
    }
}
Run Code Online (Sandbox Code Playgroud)

我刚刚和迈克尔本人讨论了这个问题。由于一个非常酷的功能,在 jsDoc3 ( https://github.com/micmath/jsdoc )中这是可能的。可以堆叠多个文档块(一个用于 getter,一个用于 setter):

http://groups.google.com/group/jsdoc-users/browse_thread/thread/d4c7794bc8f6648e/94df7339e1fc4c91#94df7339e1fc4c91

  • 演示的语法是 ES5 语法,它现在是完全标准的,完全不特定于实现。至于 get/set 不是关键字,在这里查看它们的正确方法是它们是“上下文”关键字。如果“get”后面的标记是冒号,则它是一个数据属性。如果“get”后面的标记是一个名称,那么它就是一个访问器属性。(当然,“set”也是如此。) (2认同)