dp: Funktionsname als String an Funktion übergeben und ausführen

Ich schon wieder, JavaScript ist einfach nicht meine Welt:

Also ich möchte einer Funktion...

function test1(funktionsname) {
     /* führeaus(funktionsname) */
}

einen Funktionsnamen als String übergeben und diese Funktion soll dann die übergebene Funktion ausführen bzw. erkennen, dass es sich um eine Funktion handelt und nicht um einen String. Hintergrund ist, dass ich einer Funktion gerne (wegen der Wiederverwendbarkeit) eine Callback-Funktion via String überliefern möchte...

Gruß
Daniel

  1. Hell-O!

    Ich schon wieder, JavaScript ist einfach nicht meine Welt:

    Och, soo schlimm ist es nun auch wieder nicht :-)

    Also ich möchte einer Funktion [...] einen Funktionsnamen als String übergeben und diese Funktion soll dann die übergebene Funktion ausführen bzw. erkennen, dass es sich um eine Funktion handelt und nicht um einen String.

    Jede Funktion, die du definierst, existiert unterhalb des window-Objektes. Somit kannst du auf sie zugreifen, wie bei jedem anderen Objekt auch. Für Typenfeststellung steht dir die Funktion typeof zur Verfügung:

    function foo(n, p) {  
      if(typeof window[n] != 'function')  
        alert(n + ' ist keine Funktion.');  
      else  
        window[n](p);  
    }
    

    Wichtig sind die Klammern nach window[n], da die Funktion sonst nicht aufgerufen wird.

    Siechfred

    --
    Hier könnte Ihre Werbung stehen.
    Dark Millennium || Die neue 1%-Regelung
    1. Geil,

      es funktioniert! Gibt es eigentlich irgendwo eine Anleitung, wo man diese "JavaScript-Tricks" nachlesen kann. In SelfHTML selbst habe ich dazu nichts gefunden und ich habe bis jetzt auch immer gedacht, dass ich es zu 75% auswendig kann ;-)

      Gruß
      Daniel

      1. Gibt es eigentlich irgendwo eine Anleitung, wo man diese "JavaScript-Tricks" nachlesen kann. In SelfHTML selbst habe ich dazu nichts gefunden und ich habe bis jetzt auch immer gedacht, dass ich es zu 75% auswendig kann ;-)

        Lies regelmäßig hier im Forum, da bekommst du all sowas mit. Ich empfehle zum Thema Javascript insbesondere die Beiträge von molily (moralinsaurer Theoretiker), peterS (pragmatischer Theoretiker) und Struppi (trickreicher Pragmatiker). Es gibt natürlich noch viele mehr :-)

        Siechfred

        --
        Hier könnte Ihre Werbung stehen.
        Dark Millennium || Die neue 1%-Regelung
        1. OK, Danke. Dann werde ich in Zukunft auch auf eure Hilfe zurückgreifen müssen. Hatte nur gehofft, dass es sowas wie das PHP-Handbuch auch für JavaScript gibt...

          Gruß
          Daniel

          1. OK, Danke. Dann werde ich in Zukunft auch auf eure Hilfe zurückgreifen müssen. Hatte nur gehofft, dass es sowas wie das PHP-Handbuch auch für JavaScript gibt...

            Naja, das ist selfhtml eigentlich schon.

            Das woran du gescheitert bist, ist eher wie Javascript gewisse Programmiertechniken umsetzt. In anderen Programmiersprachen würde man dein Problem eher mit Referenz oder Zeigern lösen, diese gibt es aber nicht in JS, bzw. nicht explizit.

            Du kannnst dein Problem u.U. auch andere lösen und üblicherwiese wird das auch so gemacht. Wenn du eine callback Funktion übergeben willst, kannst du diese direkt übergeben:

              
            function callback()  
            {  
            alert('callback');  
            }  
              
            function callme(f)  
            {  
            if(typeof f == 'function') f();  
            }  
              
            callme( callback );  
            
            

            Du brauchst also keinen String.

            Die Sache wird allerdings schwieriger, wenn du mit Timeouts arbeitest, dann ist u.U. die Stringvarinate einfacher.

            Struppi.

            --
            Javascript ist toll (Perl auch!)