Nicht aufrufen kann eine Klasse wie eine Funktion
Gibt es eine Möglichkeit, die mir erlauben würde zu nennen, eine Klasse wie eine Funktion. Ich bin auf der Suche, um die Funktionen unten, wo es eine main
Methode innerhalb der Klasse und das ist die, die ich will, um die Methode auszuführen.
class test {
constructor () {
return this.main
}
main () {
return Promise.resolve('thomas')
}
}
test().then(name => {
console.log(name)
})
Es scheint, meine einzige andere option wäre eine wrapper-Funktion wie diese.
class Test {
constructor (name) {
this.name = name
}
main () {
return Promise.resolve(this.name)
}
}
let test = (name) => {
return new Test(name).main()
}
test('thomas').then(name => {
console.log(name)
})
- Verwenden Sie die
new
Schlüsselwort bei der Verwendung von JS-Klassen. Ich bin damit einverstanden, dass die zweite option, die Sie zur Verfügung gestellt haben wäre richtig. (oder verwende keine Klassen) - Eine Klasse konstruiert ein Objekt. Ihr Konstruktor zurückkehren würde, eine andere Funktion, nicht eine Instanz der Klasse. Das macht nicht sehr viel Sinn machen. Was genau sind Sie hier versuchen zu erreichen? Vielleicht eine statische Methode an der Klasse ist, was du suchst?
- Ich möchte eine komplexe Funktion, die eine Menge von Innenleben und nennt Referenzen, um sich mit
this.methodName
anstatt eine Tonne von kleinen Funktionen. Ich möchte nur zu verwenden, dass manmain
Funktion. Ich verstehe, dass es nicht die beste Verwendung von einer Klasse, aber ich kann meine Kuchen und Essen es auch, wenn ich wickeln Sie es wie oben. - sind Sie einfach nur testen was Sie verspricht? Ich bin mir nicht sicher, ob Vanille es6 verspricht aber die Q-Bibliothek hat eine
Q(somevalue)
wenn Sie versuchen zu testen, lösen ein Versprechen. so dass Sie könnteQ('Thomas').tap(console.log)
oder dann, wenn Sie planen, manipulieren, Versprechen, bevor er es wieder. so oder so eine Klasse ist nicht, was Sie suchen für diese Art von design. stellen Sie nur eine einzige Funktion? - du solltest besser platzieren dieses als Antwort, nicht nur ein Kommentar
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie die
new
Schlüsselwort bei der Verwendung von Klassen in JavaScript. Ich hatte ein ähnliches problem, bis ich Hinzugefügtnew
vor den Namen der Klasse.