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 man main 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önnte Q('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
InformationsquelleAutor ThomasReggi | 2016-04-19
Schreibe einen Kommentar