代码自动补全 -- Aptana Eclipse插件

3

我最近几周一直在进行JavaScript开发,并尝试使用JSDT和Aptana来辅助代码完成。 JSDT的效果并不好,但我在Aptana上(作为Eclipse插件而非独立产品)运气更好。 我遇到的问题是,当我创建JavaScript类时,无法使代码完成工作。 例如,如果我使用以下内容,则代码完成不起作用:

var foo = new function(value){
   this.myMethod= function(){
   }
}

我也验证了以下内容无法正常工作:

function foo(value){
   this.myMethod= function(){
   }
}

我发现使用JSON格式确实有效:

var foo = {
    myMethod: function(){

    }
}

有人知道为什么Aptana适用于最后一种样式,但不适用于第一种吗?使用JSON样式对我来说行不通,因为我必须有该类的单独实例。
另外,我在跨文件中让代码完成工作方面并不十分成功。例如,如果我在javascript目录中有3个文件,则通常无法使Aptana获取其他两个类中的JSON样式标记。这曾经起作用过(对于我创建的前两个类),但自那以后,每当我添加新类时,它们就不会被捕获。
非常感谢您的帮助。
Jeremy
我已确定以下内容可行:
/**
* The foo function
*/
function foo() { 
}

/**
* The bar function
* @param {Object} a Object a
 * @param {Object} b Object b
 */
function bar(a, b){
};

foo.prototype.b = bar;

var x = new foo();
x.b

在上面的例子中,关键在于使用原型注册方法。我还尝试了以下方法,但没有成功。
/**
* The foo function
*/
var foo = new function() { 
}

/**
* The bar function
* @param {Object} a Object a
 * @param {Object} b Object b
 */
function bar(a, b){
};

foo.prototype.b = bar;

var x = new foo();
x.b

有什么区别吗?第二个是javascript中的有效类吗?
2个回答

2

希望我能够帮助回答您与Aptana代码完成行为相关的所有问题。为了鼓励Aptana的代码完成合作,我一直在使用以下方法,并取得了成功:

var foo = function(){
}
foo.prototype.a = "a"
foo.prototype.b = function(){ alert(this.a) }

你说:

而且,我在跨文件使用代码补全方面并不成功。

但是,到目前为止,我的运气还不错。然而,我发现如果我有 f = new foo() 但将其更改为 f = new bar(),代码完成将显示普通对象的属性,而不是 foo 或 bar 的属性。重命名变量(从 f = new foo() 更改为 b = new bar())或重新启动编辑器似乎有所帮助。

您有什么想法?第二个是 JavaScript 中有效的类吗?

关于 "new function()",根据 JavaScript 中小写字母 "f" 的 "new function()",类似于

var foo = new function(){ ... }

替代

var foo = { ... } // JSON style

或者

var foo = function(){ ... }

这是实现访问私有属性的一种变通方法。请记住,在JS中没有“类”,只有对象。一切都是对象。

有人知道为什么Aptana适用于后面的JSON样式,而不适用于前面的样式吗?

JSON样式声明实际上创建了一个名为foo的对象实例,所以Aptana可以轻松查找它。使用函数允许单独的实例,正如你所提到的,但是Aptana似乎无法追踪被声明为函数的东西的属性,直到找到prototype。我的理解是,原型会触发Aptana的代码完成,因为自定义对象的每个实例都将具有指定的所有属性。如果没有原型,每个实例都必须重新定义属性(通常在构造函数中完成,但请注意,在我的最顶层代码块中,我的构造函数为空,因为我使用原型来定义自定义对象)。这个链接在这个上下文中更多地解释了原型的作用 http://www.phpied.com/3-ways-to-define-a-javascript-class/


当我们不得不改变编写JavaScript文件的方式以使IDE执行我们想要的操作时,这绝对是IDE存在问题的表现。但是当缺少代码自动完成功能开始影响你的工作时,这可能是一个好时机停下来思考一分钟。如果你有太多的JavaScript代码,以至于无法跟踪其中的内容...那么这就是你需要解决的问题 ;) - halfpastfour.am

0
你在Aptana中的默认JavaScript编辑器是什么(在Windows > 首选项 > 文件关联 > *.js中)?我使用Aptana JS编辑器而不是JavaScript编辑器(默认安装)。请注意,这些设置可能因项目而异。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接