ugrás a tartalomhoz

JS függvény hívás JS változó felhasználásával

mahoo · 2011. Szep. 29. (Cs), 10.41
Sziasztok, a következőt szeretném megvalósítani (konyhanyelven leírva):

<script>
var id = 1;
id++;
if(létezik fuggvenyem_{id}()){
fuggvenyem_{id}();
}
<script>

Tehát van egy változó értéke adná a pontos fv nevet. Szeretném vizsgálni a fv létezését és ha létetik akkor futtatni.


Köszönöm a segítséget!
 
1

Hol van

Poetro · 2011. Szep. 29. (Cs), 10.47
Attól függ, hol van a függvény. Ha az egy általad létrehozott objektum metódusa, akkor:
  1. var myObj = {  
  2.   fuggvenyem_1 : function () {},  
  3.   fuggvenyem_2 : function () {},  
  4.   fuggvenyem_3 : function () {},  
  5.   fuggvenyem_4 : function () {}  
  6. }, i = 1;  
  7.   
  8. if (myObj['fuggvenyem_' + i]) {  
  9.   myObj['fuggvenyem_' + i]();  
  10. }  
Ha pedig ezek a függvények globálisak, akkor a globális névtér objektumban kell megnézni őket (böngészőkben ez a window, de például Node.js alatta a global).
2

Hú, ez nagyon gyors volt,

mahoo · 2011. Szep. 29. (Cs), 11.20
Hú, ez nagyon gyors volt, köszi. Hazamegyek és próba...
3

Én csak annyit tennék hozzá a

Karvaly84 · 2011. Szep. 29. (Cs), 12.31
Én csak annyit tennék hozzá a téma nyitó részére, hogy amit Poetro is irt a window az csak böngészőben van ugye, van ahol Global van vagy más is lehet, Ezt az alábbi egyszerű kóddal egyértelműsíteni lehet:
  1. var Global = (new Function('return this'))();  
4

Function?

Poetro · 2011. Szep. 29. (Cs), 12.47
És ehhez miért kell a new Function? Amennyiben nem strict módban vagy, akkor simán
  1. function getGlobal(){  
  2.  return (function(){  
  3.    return this;  
  4.  }).call(null);  
  5. }  
Egyébként a Function elé nem szükséges a new, minden meghívás esetén egy új függvényt fog visszaadni.
5

Tudom, csak nálam megszokás

Karvaly84 · 2011. Szep. 29. (Cs), 13.19
Tudom, csak nálam megszokás hogy konstruktort new operátorral hívom, egyébként igazad van de ha strict mode-ban fut a kód akkor a this is null lessz, Sok módszer van én csak egyet leírtam ami idáig mindig működött :)
6

Köszi, működik!

mahoo · 2011. Szep. 29. (Cs), 17.59
Köszi, működik!