有没有办法强制 NetBeans JavaScript 自动完成?

Is there a way to force NetBeans JavaScript Autocomplete?

我正在开发一些 JavaScript 用于我正在开发的 CMS。

我已经这样封装了我的代码:

(function(){
    var libraryName = {};
    ...code...
    window.libraryName = libraryName;
}())

现在,当我添加子命名空间并尝试在我的声明之外使用它时,NetBeans (8.0.2) 自动完成功能不起作用。像这样:

(function(){
    var libraryName = {};
    libraryName.subSet = {
            showSomething: function(){}
    };
    window.libraryName = libraryName;
}())
libraryName.subSet.showSomething(); // This works
libraryName.subSet. // No current autocomplete even when pressing CTRL+space

我想知道是否有一些方法可以告诉 NetBeans 如何自动完成而不是猜测。

谢谢

可以使用Ctrl+K、"hippie"代码补全。它直接完成一些匹配结果,如果完成的项目不是你想要的,你可以按住 Ctrl+K 得到另一个自动完成的项目(将替换之前插入的项目)。另一件事,你可以按 Ctrl+Space 2 次来获得 "full" 代码完成(意味着几乎所有来自其他 objects/variables)

更新:还有另一种使用 JSDoc 的方法,但它仅适用于 NetBeans 的开发版本,并将成为下一个 8.1 版本的一部分(您可以从 here 下载开发版本):

/**
 * @typedef libraryName
 * @property {Function} showSomething description
 * @property {someProp} foo description
 */

/**
 * @typedef someProp
 * @property {Date} day description
 * @property {Number} num description
 */
/**
 * @typedef libraryName.someProp2
 * @property {Date} day description
 * @property {Number} num description
 */

这样你就必须为你的库创建这个 "documentation" 并将它放在你项目的 JS 文件中的某个地方(可能是你的库的非缩小 JS 文件)。使用这个 @typedef 特性,你几乎可以学习任何代码补全,即使它甚至不在你的代码中)。当然还有一些问题有待解决(这是一个开发版本)...

我尝试了另一种对我有用的方法。

我复制了我的 JavaScript 文件并删除了封装。所以我现在有两个文件,"real" 一个有封装,另一个 "working" 没有封装。现在,当我尝试使用自动完成时它起作用了。

这样做的缺点是你会产生噪音,因为有一个文件不适用于网络应用程序,你必须在每次更新原始文件时更新它。但它使编码更容易与自动完成的魔力。当您加载 html 时,您只是不引用 "working" 文件。

所以,这将是我的 main.js 文件(例如 /js/main.js)

(function(){
var libraryName = {};
libraryName.subSet = {
        showSomething: function(){}
};
window.libraryName = libraryName;
}())

而 main.tmp.js 文件将是这样的(例如 /tmp/main.tmp.js)

var libraryName = {};
libraryName.subSet = {
        showSomething: function(){}
};

现在,当我执行 libraryName.subSet. 时,它会显示 showSomething 的正确自动完成。