2016-02-05 97 views
1

我有返回对象的函数。我希望把他们的jsdoc定义在webstorm intellisense上看到他们的属性和方法。JSDOC和揭示模块模式

我该如何编写jsdoc的以下函数?

function MyOtherFunc() { 
    return { a:'for eg string', b:12 } 
} 

function MyFunc() { 
    var prop = MyOtherFunc(); 

    function myMethod() { 
    alert('my method'); 
    } 

    function myOtherMethod() { 
    alert('my other method'); 
    } 

    // explicitly return public methods when this object is instantiated 
    return { 
    someMethod : myMethod, 
    someOtherMethod : myOtherMethod 
    };  
} 

回答

0

这个确切的情况下在WebStorm妥善处理,而不JSDoc太多,但你可以使用closure compiler type syntax这个:

/** 
* @return {{a: string, b: number}} 
*/ 
function MyOtherFunc() { 
    return { a:'for eg string', b:12 } 
} 
0

你应该能够完成你想要使用@namespace@memberof@instance什么。

/** 
* @namespace MyFunc 
*/ 
function MyFunc() { 
    var prop = MyOtherFunc(); 

    /** 
    * Does myMethody things 
    * 
    * @memberof MyFunc 
    * @instance 
    */ 
    function myMethod() { 
    alert('my method'); 
    } 

    /** 
    * Does myOtherMethody things 
    * 
    * @memberof MyFunc 
    * @instance 
    */ 
    function myOtherMethod() { 
    alert('my other method'); 
    } 

    // explicitly return public methods when this object is instantiated 
    return { 
    someMethod : myMethod, 
    someOtherMethod : myOtherMethod 
    };  
} 

如果MyFunc有任何静态方法,你只离开过@instance或明确地@static对它进行标记。

/** 
* Say hello 
* 
* @param {string} [name] - Who to say hello to 
* @memberof MyFunc 
* @static 
*/ 
MyFunc.helloWorld = function (name) { 
    console.log('Hello ' + (name || 'world')); 
} 

在这种情况下,使用@memberof@static应该是可选的。解析器应该能够自己解决这个问题;但是,无论如何,您都可以明确地使用它们,以便让读者明白任何代码。

+0

我已经完成了这个过去,但最近很难记住我之前做过的。试图弄明白的时候遇到了你的问题。 :-) –