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?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hoffentlich kann ich helfen, beantworten alle Ihre Fragen zu Aptana ist die code-Vervollständigung Verhalten. Ermutigen Aptana ist die code-Vervollständigung Zusammenarbeit, ich habe mit diesem Ansatz mit Erfolg:
Sagen Sie
aber ich habe Glück gehabt bisher. Allerdings habe ich festgestellt, dass, wenn ich habe f = new foo (), aber ändern Sie es, um f = new bar(), code-Vervollständigung zeigt Eigenschaften von plain ol' - Objekt als Gegensatz zu entweder foo oder bar. Das umbenennen der variable (b = new bar() aus f = new foo() ) oder dem Neustart des Editors scheint zu helfen.
Über "neue Funktion()", nach `new Funktion()` mit Kleinbuchstaben "f" in JavaScript , so etwas wie
statt
oder
ist Teil einer Problemumgehung zu implementieren, privaten Zugang von Eigenschaften. Halten Sie im Verstand durch all dies, dass es keine "Klassen" in JS, sondern Objekte. Alles ist ein Objekt.
JSON-style-Deklaration eigentlich erstellt Instanz von einem Objekt namens "foo", also Aptana hat kein Problem auf der Suche es. Eine Funktion ermöglicht die separate Instanzen, wie Sie erwähnen, aber Aptana scheint nicht zu verfolgen, Eigenschaften von Dingen, die deklariert sind als Funktionen bis zum Prototyp gefunden. Meine Argumentation ist, Prototyp löst Aptana ist der code-Vervollständigung, weil jede Instanz des benutzerdefinierten Objekts alle Eigenschaften angegeben. Ohne Prototyp, Eigenschaften muss neu definiert werden für jede Instanz (in der Regel erfolgt im Konstruktor-Funktion, aber beachten Sie, in meinem oberen code-block mein Konstruktor leer ist, weil ich mit prototype zu definieren, das eigene Objekt). Dieser link erklärt mehr über Prototyp in diesem Zusammenhang http://www.phpied.com/3-ways-to-define-a-javascript-class/
Was ist Ihre Standard-JavaScript-Editor von Aptana (unter Windows > Einstellungen - > Datei-Vereine > *.js)? Ich benutze die Aptana JS-Editor und nicht den JavaScript-Editor (default-installation). Beachten Sie, dass diese Einstellungen können unterschiedliche pro Projekt.