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:
var myObj = {
  fuggvenyem_1 : function () {},
  fuggvenyem_2 : function () {},
  fuggvenyem_3 : function () {},
  fuggvenyem_4 : function () {}
}, i = 1;

if (myObj['fuggvenyem_' + i]) {
  myObj['fuggvenyem_' + i]();
}
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:

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
function getGlobal(){
 return (function(){
   return this;
 }).call(null);
}
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!