代码完成 - Aptana Eclipse插件

时间:2010-03-16 20:56:49

标签: javascript eclipse aptana

我在过去几周一直在进行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样式标记。这个DID在某一点上工作(对于我创建的前两个类),但从那时起,每当我添加新类时,它们就不会被拾取。

非常感谢你的帮助。

杰里米


我发现以下情况有效:

/**
* 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 个答案:

答案 0 :(得分:2)

希望我能帮助您回答有关Aptana代码完成行为的所有问题。为了鼓励Aptana的代码完成合作,我一直在使用这种方法:

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

你说

  

此外,我在使用文件完成代码完成方面不是很成功。

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

  

任何想法有什么区别?第二个是javascript中的有效类吗?

关于“新功能()”,根据`new function()` with lower case "f" in JavaScript,类似

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

而不是

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

var foo = function(){ ... }

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

  

有谁知道为什么Aptana适用于最后[JSON]风格,但不是第一种?

JSON样式声明实际上创建了一个名为foo的Object的实例,因此Aptana没有问题查找它。正如您所提到的,使用函数允许单独的实例,但Aptana似乎不会跟踪在找到原型之前声明为函数的事物的属性。我的理由是,原型触发Aptana的代码完成,因为自定义对象的每个实例都将指定所有属性。如果没有原型,必须为每个实例重新定义属性(通常在构造函数中完成,但是在我最顶层的代码块中注意我的构造函数是空的,因为我使用prototype来定义自定义对象)。此链接在此上下文中解释了有关原型的更多信息http://www.phpied.com/3-ways-to-define-a-javascript-class/

答案 1 :(得分:0)

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