2016-04-19 20 views
8

Gibt es eine Möglichkeit, die es mir ermöglichen würde, eine Klasse als eine Funktion aufzurufen. Ich suche nach der Funktionalität unten, wo es eine main Methode innerhalb der Klasse gibt und das ist diejenige, die ich die Methode ausführen lassen möchte.Kann eine Klasse nicht als Funktion aufrufen

class test { 
    constructor() { 
    return this.main 
    } 
    main() { 
    return Promise.resolve('thomas') 
    } 
} 

test().then(name => { 
    console.log(name) 
}) 

Es scheint, dass meine einzige andere Option wäre, eine Wrapper-Funktion wie diese zu haben.

+7

Sie müssen das Schlüsselwort 'new' verwenden, wenn Sie JS-Klassen verwenden. Ich stimme zu, dass die zweite Option, die Sie angegeben haben, korrekt ist. (oder verwende keine Klassen) – evolutionxbox

+2

Eine Klasse konstruiert ein Objekt. Ihr Konstruktor würde eine andere Funktion und keine Instanz der Klasse zurückgeben. Das macht wenig Sinn. Was genau willst du hier erreichen? Vielleicht ist eine statische Methode in der Klasse, was Sie suchen? –

+0

@FelixKling Ich möchte eine komplexe Funktion erstellen, die eine Menge innerer Funktionen hat und Referenzen auf sich selbst mit 'this.methodName' aufruft, anstatt eine Tonne kleiner Funktionen zu erstellen. Ich möchte nur diese eine "Haupt" -Funktion verwenden. Ich verstehe, dass es nicht die beste Verwendung einer Klasse ist, aber ich kann meinen Kuchen essen und es auch essen, wenn ich ihn wie oben verpacke. – ThomasReggi

Antwort

6

Verwenden Sie das Schlüsselwort new, wenn Sie Klassen in JavaScript verwenden. Ich hatte ein ähnliches Problem, bis ich new vor dem Klassennamen hinzufügte.

Verwandte Themen