替换“@name”用于记录`this`的属性

时间:2013-03-20 19:14:33

标签: javascript documentation jsdoc

我想知道如何记录类的构造函数的this.属性。例如,我已尝试使用@name标记来命名我的类,但它没有为this.foo生成文档:

/**
 * @name ClassName
 * @constructor
 */
function noname (){
    /** @type {String} */
    this.foo = "bar";
}

我可以这样解决:

/**
 * @name ClassName
 * @constructor
 */
function noname (){
    /** 
    * @type {String} 
    * @name ClassName#foo
    */
    this.foo = "bar";
}

或以这种方式:

/**
 * @name ClassName
 * @constructor
 */
function noname (){
    /** @lends ClassName# */
    var that = this;

    /** @type {String} */
    that.foo = "bar";
}

然而,两者都不令人满意,因为这需要更改大量现有代码,或者在jsdoc注释中添加所有属性名称。

由于@name不起作用,是否会有替代标记?

2 个答案:

答案 0 :(得分:2)

请尝试使用@alias标记:

/**
 * @alias ClassName
 * @constructor
 */
function noname (){
    /** @type {String} */
    this.foo = "bar";
}

通常,使用@alias标记重命名代码中存在的符号;如果您要记录代码中未出现的符号(例如,在运行时生成的方法),请使用@name标记。

答案 1 :(得分:0)

@name从以下代码中取消绑定docblock。

http://usejsdoc.org/tags-name.html

  

警告:通过使用@name标记,您告诉JSDoc忽略周围的代码并单独处理您的文档注释。在许多情况下,最好使用@alias标记

因此,任何内部项都必须具有正确的@name(请参阅http://usejsdoc.org/about-namepaths.html以获得正确的语法)。