Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSDoc和JavaScript属性getter和setter_Javascript_Getter Setter_Jsdoc - Fatal编程技术网

JSDoc和JavaScript属性getter和setter

JSDoc和JavaScript属性getter和setter,javascript,getter-setter,jsdoc,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. */

我希望我的代码(如下所示)能够生成文档,用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; }
}

您可以使用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;
    }
}
我刚刚和迈克尔本人讨论过这个问题。这在jsDoc3()中是可能的,因为它有一个非常酷的特性。可以堆叠多个docblock(一个用于getter,一个用于setter):


使用
@type
记录JavaScript
get
set
访问器。类似于以下内容的内容应适用于JSDoc:

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

该文档将每个属性作为一个成员,其类型为
number

,语法演示了ES5语法,它现在是完全标准的,完全不是特定于实现的。至于get/set不是关键字,在这里正确地看它们是上下文关键字。如果
get
后面的标记是冒号,则它是数据属性。如果
get
后面的令牌是名称,则它是访问器属性。(当然,
set
也是如此。)@Jeff这是一个有趣的注释。我曾经玩过一个游戏,这个语法在ie9、ff3.5、chrome15和node中似乎非常有效,但在旧版IE中显然不行。我已经读过ES5
defineProperty
(它在IE8+中工作),但是我没有在ES5规范中遇到对象文字语法。我已经更新了一点我的答案。@Jeff作为一个附带问题,你知道有没有可能定义一个fall-in
对象。defineProperty
函数,它提供了IE6-IE7中最基本的getter/setter功能?@Jeff我有一个剧本,下面是我为支持早期版本的FF、Chrome,但仍然坚持使用IE9+(),你可以定义一个提供“最”功能的,但这实际上取决于你如何定义“大多数”
Object.defineProperty
还可以更改属性的可配置性(是否可以大致删除)及其可枚举性(是否在
for in
循环中显示)。如果没有
Object.defineProperty
,这些属性(或数据属性的可写性)都无法更改。因此,我通常建议人们不要一半实现
对象。defineProperty
,因为很遗憾,不可能正确处理细微差别。解决过度管理类型警告问题,例如,
参数类型{get:(function():number)}不能分配给参数类型number