Autor | Zpráva | ||
---|---|---|---|
JPAS Profil |
#1 · Zasláno: 26. 12. 2006, 18:20:28 · Upravil/a: JPAS
Zdravím diskusi,
hledám co to jde, ale nevím jak zavolat funkci způsobem, že v proměnné nazevFunkce bude název funkce, chtělo by to něco jako:
a bylo by to v podstatě klasické volání funkce jako nazevFunkce();. Je něco takového v JavaScriptu, povolaným moc děkuji za odpověď. |
||
Peca Profil |
#2 · Zasláno: 26. 12. 2006, 18:54:52
|
||
ah01 Profil |
#3 · Zasláno: 26. 12. 2006, 19:56:55 · Upravil/a: ah01
Malý příklad:
Trochu možná elegantnější (přehlednější) je použít metodu call nebo apply objektu Function (pro vysvětlení: každá funkce je objekt typu Function, takže jako každý objekt i funkce má své metody)
první parametr metody call je reference na objekt „this“, který lze použít v těle fce., v tomto příkladě není potřeba, ale má velké použití při OOP. Další argumenty jsou už předány jako běžné argumenty fce. kterou voláme. Metoda apply se od call liší pouze v tom, že vlastní argumenty fce. se ji předávají v podobě pole. Peca fci. eval bych se pokud možno snažil vyhnout (jako čert kříže), jediné kdy by to snad nešlo, je případ kdybych měl název fce. jako řetězec, ale takový skript by byl asi dost „prasárna“. |
||
los Profil * |
#4 · Zasláno: 26. 12. 2006, 21:30:15
Súhlasím s ah01, iba by som opravil preklep: metóda allpy sa volá apply.
Ak máš v premennej odkaz na funkciu, tak tú funkciu zavoláš tak, ako keby tá premenná bola priamo tou funkciou. Ak máš v premennej iba názov funkcie ako reťazec a vieš, v akom objekte je definovaná, môžeš ju zavolať pomocou normálneho prístupu k vlastnosti objektu, v ktorom je tá funkcia (globálne premenné a teda aj globálne funkcie sa nachádzajú v objekte window). Jedine v prípade, že to inak nejde, tak použiť funkciu eval (toto ale nie je ten prípad). function test() {alert("test);} |
||
ah01 Profil |
#5 · Zasláno: 26. 12. 2006, 21:38:50
los
„metóda allpy sa volá apply“, nojo nějak jsem se upsal :-), už jsem to opravil Na možnost volat fci. v rámci globálního objektu jsem úplně zapomněl, díky za doplnění. |
||
JPAS Profil |
#6 · Zasláno: 27. 12. 2006, 11:18:20
Moc děkuji za objasnění, dal jsem si to konečně dohromady, díky.
|
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0