javascript - 代码完成——Aptana Eclipse 插件

标签 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 在某一点上起作用(对于我创建的前 2 个类),但从那时起,每当我添加新类时,它们就不会被拾取。

非常感谢您的帮助。

杰里米


我已经确定以下工作:

/**
* 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

在上面的示例中,关键是您正在使用原型(prototype)注册方法。我也尝试了以下方法,但没有用。

/**
* 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 中的有效类吗?

最佳答案

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

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

你说

Also, I am not very successful in getting code completion to work across files.

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

Any ideas what the difference is? Is the second a valid class in javascript?

关于“new function()”,根据`new function()` with lower case "f" in JavaScript , 像

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

代替

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

var foo = function(){ ... }

是实现属性私有(private)访问的解决方法的一部分。请记住,在 JS 中没有“类”,而是对象。万物皆对象。

Does anyone know why Aptana works for the last [JSON] style, but not the first?

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

关于javascript - 代码完成——Aptana Eclipse 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2458071/

相关文章:

Aptana:查找和替换标签(带空格)

javascript - 从索引开始循环遍历对象

javascript - 围绕圆移动对象javascript

java - 在 Eclipse 上设置 EMF Compare 并编译

python - 如何开始使用基本的 Eclipse + PyDev

aptana - 括号突出显示的背景和前景色

javascript - Google V3 添加点击监听器

javascript date to string() 对我不起作用,甚至在 w3schools 示例中也不起作用

java - 在 Eclipse 中停止 vertx verticle

word-wrap - Aptana Studio 3 Beta 中的自动换行/换行选项?