Ich habe eine Situation, in der ein Klassenkonstruktor das Ergebnis des Aufrufs einer statischen Methode zurückgibt.Korrekte Weise, auf eine Elementfunktion von einer statischen Methode in einer JavaScript-Klasse zu verweisen
Allerdings muss ich in dieser statischen Methode eine Funktion aufrufen, die eine Memberfunktion sein sollte, aber wenn es eine Memberfunktion ist, ist sie nicht verfügbar.
Gibt es einen guten Weg, dies zu tun?
Dieser Code soll klären helfen:
class Program {
constructor (paths) {
this.inputs = {}
this.program = Program.createProgram(paths)
return this.program
}
static createProgram() {
const return_program = {name: test}
// async function executes
this.modifyProgramName() // This is an error because modifyProgram name is not static on this class
return return_program
}
modifyProgramName() {
// Execute a promise
fetch('someresource').then(() => {
this.program.name = 'newName'
}, 500)
}
Hier modifyProgram
sollte wirklich nicht static
sein, weil die Implikation „Modifizierung“ ist ein Programm, dass es bereits existiert.
Wenn ich jedoch modifyProgram
in createProgram
aufrufen möchte, die im Wesentlichen der Konstruktor ist, kann ich nicht, weil keine Instanz der Program-Klasse noch existiert.
Gibt es einen guten Weg, dies zu tun?
Warum ist 'createProgram()' statisch? Angenommen, Sie kommen über das aktuelle Problem hinaus, wie würden Sie die oben genannte Klasse verwenden? – nnnnnn
'createProgram' ist statisch, da es im Konstruktor aufgerufen wird, um ein Programm zurückzugeben. Sie könnten es im Konstruktor nicht aufrufen, wenn es nicht statisch wäre. – Startec
Sie sollten immer noch eine Methode vom Konstruktor aufrufen können. Ich werde meine Antwort aktualisieren, um es dir zu zeigen. –