2017-12-15 2 views
0

so habe ich an einer einfachen Sache gearbeitet, um mit zu spielen, hier ist ein Code-Schnipsel, den ich gemacht habe;Methode/Funktion erscheint als Variable in IntelliSense

var person = function(first, last) { 
    this.firstName = first; 
    this.lastName = last; 
    this.fullName =() => `${this.firstName} ${this.lastName}`; 
} 

Nun, wenn ich die fullName() Methode des Objekts tippen, zeigt es wie folgt;

Hmm

Statt als Verfahren zum Anzeigen, zeigt es als eine Variable, geschieht dies auch auf das „Person“ Objekt, gibt es eine Möglichkeit, die IntelliSense außer Kraft zu setzen, um es korrekt angezeigt werden?

+0

Es wird nicht als "Variable" angezeigt, es wird als * Eigenschaft * angezeigt, was eine Funktion ist. – deceze

Antwort

1

Nur kleine Notiz über den Unterschied zwischen Funktionen und Methoden:

Methoden sind die Klassen zusammen, während Funktionen nicht. Da JavaScript ein Multi-Paradigma ist (eines davon ist funktional), sind die meisten JavaScript-Funktionen genau das - Funktionen. Alle Methoden sind Funktionen, aber nicht alle Funktionen sind Methoden.

Auf Ihre Frage, es hat eine einfache Antwort: Lambdas (Pfeilnotation) sind nicht als Funktionen klassifiziert, so dass sie als Variablen/Eigenschaften angezeigt werden.

Hoffe das hepled!

+1

Gibt es eine Möglichkeit, sie als eine Funktion zu klassifizieren? – Minin

+2

Anders als die IntelliSense-Logik zu bearbeiten? Leider nicht. Lambdas sind technisch gesehen keine Funktionen, daher werden sie niemals als solche identifiziert. Aber es sollte wirklich nicht so ein großes Problem sein - Lambdas nehmen keine Attribute oder Parameter, daher gibt es keinen wirklichen Bedarf für diese Funktion von IntelliSense. Wenn Sie sie einfach als Funktionen identifizieren möchten, fügen Sie ihnen einfach ein bestimmtes Zeichen oder eine Kennung voran. Zum Beispiel '_fullName',' FullName', 'F_fullName',' func_FullName', usw. Entschuldigung, das ist nicht die Antwort, auf die Sie gehofft haben! –

+1

Das Problem ist, obwohl es keine Argumente braucht, [es läuft nicht] (https://i.imgur.com/EaCuaaE.png), ohne '()' am Ende davon. – Minin

0

Sie haben der Eigenschaft eine Pfeilfunktion zugewiesen. Möglicherweise können Sie mit dem neuen Keyword das gewünschte Verhalten erzielen. Ich bin mir nicht sicher, obwohl mein Wissen über Konstrukteure verblasst ist, seit wir vor fünf Jahren aufgefordert wurden, sie nicht mehr zu benutzen.