8
Czy jest jakiś sposób, który pozwoli mi na wywołanie klasy jako funkcji. Chcę mieć funkcjonalność poniżej, gdzie istnieje metoda main
w klasie i to jest ta, którą chcę wykonać metodę.Nie można wywołać klasy jako funkcji
class test {
constructor() {
return this.main
}
main() {
return Promise.resolve('thomas')
}
}
test().then(name => {
console.log(name)
})
Wygląda na to, że moją jedyną opcją byłoby posiadanie takiej funkcji.
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)
})
Musisz użyć słowa kluczowego 'new' podczas używania klas JS. Zgadzam się, że druga opcja, którą podałeś, byłaby poprawna. (lub nie używaj klas) – evolutionxbox
Klasa tworzy obiekt. Twój konstruktor zwróci inną funkcję, a nie instancję klasy. To nie ma większego sensu. Co dokładnie próbujesz osiągnąć tutaj? Może szukana jest statyczna metoda na zajęciach? –
@FelixKling Chciałbym utworzyć złożoną funkcję, która ma wiele wewnętrznych działań i odwołuje się do siebie używając 'this.methodName' zamiast tworzyć mnóstwo małych funkcji. Chcę tylko użyć tej jednej funkcji "głównej". Rozumiem, że nie jest to najlepszy użytek z klasy, ale mogę też zjeść ciastko i je zjeść, jeśli zawinę to jak wyżej. – ThomasReggi