一些背景,跳到第 2 段进入问题。我已经尝试了很多像您典型的开发人员一样的编辑器,但我一直以来最喜欢的是 Homesite/ColdFusion Studio,在它被吸收到 Dreamweaver 之前,我相信你们中的大多数人都会同意我的看法,是的.. Dreamweaver。无论如何,我一直在运行 Sublime Text 2,它没问题,但我觉得我需要更多的 IDE 而不是文本编辑器。为此,我已经使用 NetBeans 几个月了。我开始喜欢它了。在家里,我使用带有 TextMate 和 Coda 的 Mac,但我不介意完全转向 NetBeans,但是有一些问题困扰着我。最值得注意的是它的 XSL 编辑很烦人,原因有几个,其次是我一直遇到的这个 JavaScript 问题。
我喜欢使用 ctrl+click 方法等在 JavaScript 文件中跳转,alt+back 返回并能够在导航器中查看方法和类的轮廓的功能。但是我的问题是,在我的 Javascript 文件中,NetBeans 似乎无法识别我的类及其方法。我使用一种模式来编写我的单例类,这已证明对我来说是不可或缺的。我写这样的类如下:
// create class to contain code for this page
var FieldMgmt = function() {
// vars local to the class
var Fields = {}; // Store the form fields of the class
return {
// startup method
init: function() {
// initialize properties
console.log('field management intialized');
// capture the fields
this.Fields = Fields = {
field1: $('select[name=field1]') // field One
,field2: $('select[name=field2]') // field Two
,field3: $('select[name=field3]') // field Three
};
this.initEvents(); // setup events
}
// initialize events
,initEvents: function(){
}
// method 1
,method1: function(arg1, arg2){
}
// method 2
,method2: function(arg1, arg2){
}
}; // end return of FieldMgmt
}(); // end FieldMgmt
// start the code for this page
$(document).ready( function(doc){ FieldMgmt.init(); } );
下面是在我的导航器中显示的这个文件的图片:
如您所见,我的方法都没有出现在导航器中,例如 initEvents
、method1
、method2
等。ctrl+单击方法调用也不会转到方法声明。所以 NetBeans 只是不知道这是一个类。我之前在其他编辑器(例如 NotePad++)中遇到过与此模式类似的问题,我能够通过修改用于解析文件的正则表达式让编辑器找出我的文件。
我可以在没有这个功能的情况下生存,但如果我能让它工作,那么这将是我选择的编辑器,因为这些文件可能会变得相当大,并且能够看到所有方法并通过 ctrl+click 快速跳转文件-ing 等会很棒。
我在 Windows Server 2003 上使用的是 NetBeans 7.3,所有内容都已更新到最新版本。非常感谢任何帮助。无论如何,我是否可以修改 NetBeans 以使其了解我的方法?有这方面的插件吗?提前致谢。
最佳答案
在您的示例代码中,您返回一个闭包,该闭包将名为 Fields
的变量保持为“私有(private)”,但您在 init 中做的第一件事是通过声明 this.Fields=Fields 公开它。通过发布的示例代码,您还可以将 FieldMgmt 声明为对象文字,并让 NetBeans 识别它以使其属性显示在导航器中。
var FieldMgmt = {
init: function() {
}
,initEvents: function(){
}
,method1: function(arg1, arg2){
}
,method2: function(arg1, arg2){
}
};
关于javascript - Netbeans 导航器不显示我的 JavaScript 类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17461068/