"Flexible" Methode

marcel_m

Mitglied
Hallo zusammen,

eine etwas -komische- Frage:
Ist es möglich, einer JS-Methode einen String mitzugeben, der in der aufgerufenen Methode später eine Methode aufruft, deren Namen dem Inhalt des Strings entspricht?

Beispiel:

Code:
meineLieblingsMethode('alert');

Wie müsste das in der Methode Aussehen, damit Methodenname(), also in diesem Fall alert() aufgerufen wird?

Das Ganze gibt's ja beispielsweise auch von Haus aus bei JS hinsichtlich Ajax beim statehandler....

Vielen Dank im Voraus und viele Grüße

Marcel
 
Moin Marcel,

meinst du so:?
Javascript:
methode=function(arg)
{
  this._alert=function()
  {
    alert('moin moin');
  }
  this._prompt=function()
  {
    prompt('moin moin','gib was ein');
  }

  this['_'+arg]()

}
methode('alert');
methode('prompt');

(beachte dabei den Unterstrich vor den eigenen Methodennamen, damit sollen Probleme zwischen JS-internen Methodennamen und eigenen Methodennamen verhindert werden ;) )

Der Aufruf der Methoden erfolgt hierdurch:
Code:
this['_'+arg]()
 
Hallo Sven,

vielen Dank für deine Antwort :)

Es ist nicht ganz das, was ich suche - geht aber auf jeden Fall in die Richung. Die von dir geschriebene Methode greift auf bereits vordefinierte Methoden zurück - was ich bräcuhte, wäre etwas allgemein gehaltenes.

Trotzdem aber nochmal vielen Dank für die prompte Antwort.

Grüße

Marcel
 
Naja...eine nicht existente Funktion lässt sich schlecht aufrufen :)

Meinst du eher so:?
Code:
methode=function(fn,param)
{
  window[fn](param)
}
methode('alert','moin');
methode('prompt','moin moin');

ist im Endeffekt dasselbe, denn beide Methoden sind bekannt.
 
Hallo Sven,

da stimm ich dir natürlich zu ;-) Soll aber für ne "Toolbox" zum einbinden sein und daher recht flexibel.
Und:
ES FUNKTIONIERT

Danke!
Ich schließ dann das Topic :)

Grüße

Marcel
 

Neue Beiträge

Zurück