Esiste un modo che consenta di chiamare una classe come funzione. Sto cercando di avere la funzionalità qui sotto, dove c'è un metodo main
all'interno della classe e quello è quello che voglio che il metodo venga eseguito.Impossibile chiamare una classe come funzione
class test {
constructor() {
return this.main
}
main() {
return Promise.resolve('thomas')
}
}
test().then(name => {
console.log(name)
})
Sembra che la mia unica altra opzione sarebbe avere una funzione wrapper come questa.
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)
})
È necessario utilizzare la parola chiave 'new' quando si utilizzano le classi JS. Sono d'accordo che la seconda opzione che hai fornito sarebbe corretta. (o non utilizzare le classi) – evolutionxbox
Una classe costruisce un oggetto. Il tuo costruttore restituirebbe un'altra funzione, non un'istanza della classe. Questo non ha molto senso. Cosa stai cercando di realizzare esattamente qui? Forse un metodo statico sulla classe è quello che stai cercando? –
@FelixKling Mi piacerebbe creare una funzione complessa che ha molti meccanismi interni e chiama riferimenti a se stessa usando 'this.methodName' piuttosto che creare una tonnellata di piccole funzioni. Voglio solo usare quella funzione 'main'. Capisco che non è il miglior uso di una classe, ma posso avere la mia torta e mangiarla anche se la avvolgo come sopra. – ThomasReggi