需要头脑风暴。我有一个 Javascript 库(jQuery、ExtJS 等)的问题,这些库似乎与 Visual Studio 2008 中内置的 Javascript Intellisense 不能很好地配合使用。它们提供了一些 intellisense 无法理解的实用程序帮助函数。
IE。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 显示/识别这些命名空间,而无需直接编写对象,例如:
Root = {
Sub: {
Subsub: {}
}
};
我承认第一个 jQuery 调用与这个非常相似,但最好使用扩展功能来防止删除/覆盖现有的功能/命名空间。
问题
我们应该如何使用这些实用函数来使 Intellisense 工作?
欢迎任何可以对此有所启发的头脑风暴答案?
编辑
我发现如果使用实用程序函数创建的命名空间是在外部定义的(即在不同的脚本文件中)并且您对该文件进行引用,则显示它们:
/// <reference path="different.script.file.js" />
在这种情况下,一切都很好。但是,如果您在同一个文件中调用实用程序函数,它们不会列在智能感知下拉列表中。