• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

wywoływanie funkcji z obiektu . ale z dopasowania match

42 Warsaw Coding Academy
0 głosów
236 wizyt
pytanie zadane 24 czerwca 2024 w JavaScript przez niezalogowany

problem taki ze chce 

let text = 'Maths.floor(5.7)';
const Maths = {
    pow: function(w, p) {
        return Math.pow(w, p);
    },
    round: function(x) {
        return Math.round(x);
    },
    floor: function(y) {
        return Math.floor(y);
    }
};

let reg = /(\w+)\.(\w+)\((\d+\.?\d*)\)/;
let match = text.match(reg);

 

próbiwałem z róznymi rzeczmai ale nic nie pomogło wiec 

chce ze  by 

załuzmy mamy zmienne

name = match[1];

func = match[2]

arg = match[3]

a nastepnie chce zrobic tak 

name.func(arg);

 

czyli jesli wpisze Maths.floor(5.3); to powinno zostac wywołane Maths.floor ale to nie działa  

no ktos pomoze 

 

moja historia:

pomysląłem ze w moim pseudo interpreterze zamist uzywac dla kazdej funckji wbudoanej miec dopasowanie mozna zrobci jedno  dla kazdej co jest bardzo dla mnie optymalne proste i oszczedne 

2 odpowiedzi

0 głosów
odpowiedź 24 czerwca 2024 przez Marchiew Dyskutant (7,730 p.)
Generalnie możesz użyć funkcji eval i ona wszystko w stringu potraktuje jak normalny js. Musisz uważać, jeśli napis pochodzi z inputa lub ogólnie od użytkownika i nie masz w stu procentach kontroli nad jego zawartością. Czy w tej zmiennej będą też inne konstrukcje, nie tylko "Math.metoda()", ale też na przykład "console.log("tekst")"?
komentarz 24 czerwca 2024 przez niezalogowany
wiem dlatego tez nie chce tego eval uzywac
0 głosów
odpowiedź 24 czerwca 2024 przez Comandeer Guru (607,060 p.)

Jeśli masz poszczególne elementy wyrażenia w tablicy match, to możesz się odwoływać do nich jako do indeksów mapy:

Maths[ zmiennaZNazwaMetody ]();

 

komentarz 24 czerwca 2024 przez niezalogowany
tak ale chce zbey obiekt tez był z dopasowania
komentarz 24 czerwca 2024 przez Comandeer Guru (607,060 p.)

No to możesz mieć mapę map, typu lib.Maths.jakasFunkcja. Wówczas będziesz mógł się odwoływać zarówno do obiektu, jak i metody. Chociaż osobiście nie wiem, czy bym nie zrobił tego na płaskiej mapie i nie dopasowywał całej nazwy (obiektu + metody).

komentarz 25 czerwca 2024 przez niezalogowany
no dzieki juz postanowiłem zrobic juz pare dopasowan dla paru obiektów
komentarz 25 czerwca 2024 przez niezalogowany
no  tak naprawde ja na poczatku chciałem wszystkie obeikty i funkcje w obietahc obsłuzyc jednym regaxem

Podobne pytania

0 głosów
0 odpowiedzi 142 wizyt
pytanie zadane 11 czerwca 2024 w JavaScript przez niezalogowany
0 głosów
2 odpowiedzi 256 wizyt
pytanie zadane 8 czerwca 2024 w JavaScript przez niezalogowany
0 głosów
0 odpowiedzi 166 wizyt
pytanie zadane 7 czerwca 2024 w JavaScript przez niezalogowany

93,395 zapytań

142,389 odpowiedzi

322,569 komentarzy

62,753 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...