Code-Completion — Aptana Eclipse-Plugin

Ich habe ein javascript-Entwicklung für die letzten paar Wochen und haben versucht, JSDT und Aptana zur Unterstützung in der code-Vervollständigung. JSDT war nicht gut, aber ich hatte mehr Glück mit Aptana (als eclipse-plug-in, nicht die standalone-Produkt). Das problem bin ich begegnet, ist, dass wenn ich das erstellen von javascript-Klassen, die ich nicht bekommen kann die code-Vervollständigung zu arbeiten. Zum Beispiel, wenn ich im folgenden dann die code-Vervollständigung funktioniert nicht:

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

Habe ich auch verifiziert, dass das folgende nicht funktionieren:

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

Habe ich gefunden, dass die Verwendung eines JSON-Stil funktioniert:

var foo = {
    myMethod: function(){

    }
}

Weiß jemand, warum Aptana arbeiten für den letzten Stil, aber nicht die ersten? Die Verwendung der JSON-Stil funktioniert nicht für mich, weil ich zu haben seperate Instanzen der Klasse in Frage stellen.

Ich bin auch nicht sehr erfolgreich in immer die code-Vervollständigung zu arbeiten über Dateien. Zum Beispiel, wenn ich die 3 Dateien in das javascript-Verzeichnis, dann habe ich meist nicht bekommen, Aptana zu Holen, die JSON-style-markup in den anderen beiden Klassen. Dies funktionierte an einer Stelle (für die ersten 2 Klassen, die ich erstellt), aber da dann immer, wenn ich neue Klassen hinzufügen, die Sie nicht abgeholt.

Danken Ihnen sehr für Ihre Hilfe.

Jeremy


Habe ich festgestellt, dass das folgende funktioniert:

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

Im obigen Beispiel ist das der Schlüssel ist, dass Sie sich registrieren, die Methode mit Prototypen. Ich habe auch versucht, die folgenden, aber es hat nicht funktioniert.

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

Irgendwelche Ideen, was der Unterschied ist? Ist die zweite eine gültige Klasse in javascript?

InformationsquelleAutor jwmajors81 | 2010-03-16
Schreibe einen Kommentar