Javascript Intellisense 没有显示所有内容

标签 javascript visual-studio-2008 namespaces javascript-intellisense

需要集思广益。我遇到了 Javascript 库(jQuery、ExtJS 等)的问题,这些库似乎无法与 Visual Studio 2008 中内置的 Javascript Intellisense 配合使用。它们提供了 intellisense 无法理解的某些实用程序辅助函数。

即。 ExtJS代码

// convenience function to create namespace object placeholders
Ext.namespace("Root.Sub.Subsub");

或jQuery

// doing the same thing in jQuery
$.extend(window, {
   Root: {
      Sub: {
         Subsub: {}
      } 
   },
});

甚至(我很同情你要维护这段代码)

$.extend(window, { Root: {}});
$.extend(Root, { Sub: {}});
$.extend(Root.Sub, { Subsub: {}});

这些调用的最终结果基本相同。 它们都不会使 Root 命名空间对 Visual Studio 2008 中的 Javascript Intellisense 可见。如果我们知道 intellisense 的工作原理,我们可能能够克服这种情况。

是否有可能说服 Intellisense 显示/识别这些 namespace ,而无需像这样直接编写对象:

Root = {
   Sub: {
      Subsub: {}
   }
};

我承认第一个 jQuery 调用与这个非常相似,但最好使用扩展功能来防止删除/覆盖现有功能/命名空间。

问题

我们应该如何使用这些实用函数来使 Intellisense 工作?
欢迎任何可以对此有所启发的集思广益答案?

编辑

我发现如果使用实用函数创建的 namespace 是在外部定义的(即在不同的脚本文件中)并且您引用该文件,则它们会显示:

/// <reference path="different.script.file.js" />

在这种情况下一切都很好。但是,如果您在同一个文件中调用实用程序函数,它们不会列在智能感知下拉列表中。

最佳答案

就 jQuery 而言:看看 this blog post . This post也是一本好书。

我已经尝试了很多方法来让 Visual Studio 识别 JavaScript 对象和命名空间——我发现唯一可靠的解决方案就是您自己提到的:

var RootNamespace = {
   SubNamespace: {
      SubSubNamespace: {}
   }
};


更新:

开发人员 1 写道:

var RootNamespace = {
   SubNamespace: {
      SubSubNamespace: {}
   }
};

开发人员 2 扩展:

RootNamespace.SubNamespace.AnotherSubNamespace = {
    alertHelloWorld: function ()
    {
        alert("Hello World!");
    }
};

关于Javascript Intellisense 没有显示所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1424183/

相关文章:

visual-studio-2008 - 如何在 Visual Studio 2008 中为自定义用户控件提供设计时支持?

c# - 如何在C#中配置中间输出目录

c++ - C++ 命名空间在 Windows 和 linux 中的行为是否不同?

c++ - 使用 sfinae 测试命名空间成员是否存在

c# - VS 2015 - C# 使用命名空间简化/截断

将十进制年值转换为年、月和日的Javascript函数

javascript - "disabling"(灰色文本,无鼠标/键盘)容器内的 jQuery UI 小部件和常规 HTML

javascript - 如果部分状态发生变化,如何停止 react 重新渲染组件?

javascript - 突出显示 html 表格指定列上的值

c++ - 调试时找不到 msvcr90d.dll