如何让VisualStudioJavaScript Intellisense在函数之间传递时识别我自己的类?

如何让VisualStudioJavaScript Intellisense在函数之间传递时识别我自己的类?,javascript,visual-studio,intellisense,Javascript,Visual Studio,Intellisense,在大多数情况下,一旦您了解了细节,VS2010中的Intellisense For JavaScript就可以很好地工作。然而考虑下面的例子: function ClassA(someClassB) { ///<summary>My A Class</summary> ///<param type="ClassB" name="someClassB">An instance of my B Class</param>

在大多数情况下,一旦您了解了细节,VS2010中的Intellisense For JavaScript就可以很好地工作。然而考虑下面的例子:

   function ClassA(someClassB) {
       ///<summary>My A Class</summary>
       ///<param type="ClassB" name="someClassB">An instance of my B Class</param>
       someClassB.method1(); //Intellisense doesn't work
       this.method2 = function() {
            ///<summary...
       };
   }

   function ClassB(someClassA) {
       ///<summary>My A Class</summary>
       ///<param type="ClassA" name="someClassA">An instance of my A Class</param>
       someClassA.method2(); //Intellisense doesn't work
       this.method1 = function() {
            ///<summary...
       };
   }
所以很明显,Intellisense能够阅读我的XML文档并为我的类提供服务;但是它似乎没有读取我在
节点中定义的类型。这对jQuery是有效的,我注意到它是通过
进入相关函数的


我遗漏了什么?

您确定它对jQuery有效吗?尝试将jQuery参数命名为jQ。。。我怀疑您是否能使用jQ获得相同的intellisense(据我所知,在调用函数时,VS除了显示成员信息外,对参数数据类型不做任何处理。使用jQuery的intellisense是因为它已经定义为$。您是对的。我获得intellisense时不使用for jQuery($)。很明显,参数类型没有被使用。有没有一种方法可以将VS推向正确的方向?除了你的移动
if(false)
之外,我认为我还没有找到一种方法…你可能可以做
someClassB=someClassB | | new ClassB()
,这比
if(false)稍微干净一点
。尽管你也需要仔细观察这个实例化的副作用(如果有的话)。你也可以使用
ClassB.prototype.method1.call(…)
。如果你在prototype中使用这个方法,并且你可以从中获得一些智能感知……我同意你的someClassB=someClassB | | newclassb();方法更简洁;但至少它还是一个碍眼的东西,最糟糕的是它还是一个维护陷阱(就像我的shifty hack一样)。如果我可以在不使用构造函数的情况下实例化该类,我只需添加一个if(isNullOrEmpty(someClassB)){someClassB=newClassB();}。这至少是合法和明确的,但在许多需要构造函数的情况下,这并没有帮助。我确实希望VS JS intellisense能够做到这一点。如果有解决方案,我很想知道它是什么。如果我们在更改代码以适应intellisense或不使用intellisense之间没有选择,那就糟糕了。你确定它对jQuery有效吗?尝试命名为y我们的jQuery参数jQ…我怀疑您是否会获得与jQ相同的intellisense(从我看到的情况来看,在调用函数时,VS除了显示成员信息外,对参数数据类型不做任何处理。使用jQuery的intellisense是因为它已经定义为$。您是对的。我在不使用for jQuery($)的情况下获得intellisense。很明显,参数类型没有被使用。有没有一种方法可以将VS推向正确的方向?除了你的移动
if(false)
之外,我认为我还没有找到一种方法…你可能可以做
someClassB=someClassB | | new ClassB()
,这比
if(false)稍微干净一点
。尽管你也需要仔细观察这个实例化的副作用(如果有的话)。你也可以使用
ClassB.prototype.method1.call(…)
。如果你在prototype中使用这个方法,并且你可以从中获得一些智能感知……我同意你的someClassB=someClassB | | newclassb();方法更简洁;但至少它还是一个碍眼的东西,最糟糕的是它还是一个维护陷阱(就像我的shifty hack一样)。如果我可以在不使用构造函数的情况下实例化该类,我只需添加一个if(isNullOrEmpty(someClassB)){someClassB=newClassB();}。这至少是合法和明确的,但在许多需要构造函数的情况下,这并没有帮助。我当然希望VS JS intellisense能够做到这一点。如果有解决方案,我很想知道它是什么。如果我们在更改代码以适应intellisense或不使用intellisense之间没有选择,那就太糟糕了。
function ClassA(someClassB) {
    ...
    if(false) {
        someClassB = new ClassB();
    }
    ...
    someClassB.method1(); //Intellisense now works
}