Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.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
Javascript 在构造函数中指定的方法上Visual studio web essentials JSDoc intellisense不起作用?_Javascript_Visual Studio_Intellisense_Jsdoc_Web Essentials - Fatal编程技术网

Javascript 在构造函数中指定的方法上Visual studio web essentials JSDoc intellisense不起作用?

Javascript 在构造函数中指定的方法上Visual studio web essentials JSDoc intellisense不起作用?,javascript,visual-studio,intellisense,jsdoc,web-essentials,Javascript,Visual Studio,Intellisense,Jsdoc,Web Essentials,我对jsdoc注释有点陌生(尝试将一些vsdoc注释转换为jsdoc,这样我就可以使用支持jsdoc的文档生成器),所以如果我做了一些明显不正确的事情,请阻止我,但我注意到,如果您在构造函数的原型上分配方法,intellisense对该成员有效: /** * @constructor * @this {Foo} */ function Foo() {} /** * A bar of Foo for you. * @param {string} baz A foo bar b

我对jsdoc注释有点陌生(尝试将一些vsdoc注释转换为jsdoc,这样我就可以使用支持jsdoc的文档生成器),所以如果我做了一些明显不正确的事情,请阻止我,但我注意到,如果您在构造函数的原型上分配方法,intellisense对该成员有效:

/** 
 * @constructor 
 * @this {Foo} 
 */ 
function Foo() {}

/** 
 * A bar of Foo for you.
 * @param {string} baz A foo bar baz. 
 * @return {string} You get back what you give. 
 */ 
Foo.prototype.bar = function(baz) { return baz; }
但是,如果在构造函数中指定bar,则bar上的intellisense方法会中断—它只是将整个注释、jsdoc标记和所有内容显示为一个块。它不显示参数类型或通过以下方式传递返回值:

/** 
 * @constructor 
 * @this {Foo} 
 * @param {string} baz A foo bar baz. 
 */ 
function Foo(baz) { 
  /** 
   * A bar of Foo and something else too.
   * @param {string} barzipan A little something extra. 
   * @return {string} You get back what you gave, and then some. 
   */ 
  this.bar = function(barzipan) { return baz + barzipan; }; 
}

vsdoc intellisense解析器能够处理原型上的方法或分配给它的方法,但是jsdoc解析器似乎被构造函数中分配给它的方法弄糊涂了。

要处理这个问题,您需要在jsdoc值中添加更多的语法糖位。这是因为解析器不知道如何将“This.bar()”转换为“Foo.bar()”。要解决此问题,请添加以下内容:

/** 
 * @constructor 
 * @this {Foo} 
 * @param {string} baz A foo bar baz. 
 */ 
function Foo(baz) { 
  /** 
   * A bar of Foo and something else too.
   * @param {string} barzipan A little something extra. 
   * @return {string} You get back what you gave, and then some. 
   * @function bar
   * @memberof {@link Foo}
   */ 
  this.bar = function(barzipan) { return baz + barzipan; }; 
}
见和。当您想要创建私有函数(记录私有函数)时,这也可以帮助您

function Foo(baz) {
    /**
     * Returns what Bob did...
     * @param {string} doStuff Stuff to pass in.
     * @function bob
     * @memberof Foo
     * @private
     */
    var bob = function(doStuff) {
         return "Bob did " + doStuff;
    }
}