JavaScript-Variable als Funktionsname verwenden?

8

Ich habe den folgenden Code in Javascript:

%Vor%

Ich möchte 2 Funktionen in der Schleife erstellen (createDialog und updateDialog). Wie kann ich das machen? In PHP gibt es sehr einfache $$ var. Aber wie mache ich variable Variable in JS Ich weiß es nicht.

Danke

    
pltvs 01.09.2010, 14:21
quelle

5 Antworten

6

So:

%Vor%

Da JavaScript-Funktionen jedoch Variablen als Referenz erfassen, funktioniert Ihr Code nicht wie vorgesehen.
Sie müssen die innere Funktion innerhalb einer separaten Funktion definieren, so dass jede eine separate key Variable (oder Parameter) erhält.

Zum Beispiel:

%Vor%

Sie können es wie folgt verwenden:

%Vor%

BEARBEITEN

Sie versuchen, den globalen Namespace mit mehreren dialogbezogenen Funktionen zu verschmutzen.
Das ist eine schlechte Idee; Es ist besser, Ihre Funktionen im Namespace zu organisieren.

Wenn Sie den globalen Namespace wirklich polieren möchten, können Sie Folgendes tun:

%Vor%

Dies erzeugt globale Funktionen namens createDialog und updateDialog .
Bei einem normalen Funktionsaufruf bezieht sich das Schlüsselwort this auf den globalen Namespace (normalerweise das Objekt window ).

    
SLaks 01.09.2010, 14:23
quelle
2

Sie benötigen einen Verweis auf das Bereichsobjekt, in dem Sie die Funktionen erstellen möchten. Wenn es sich um den globalen Bereich handelt, können Sie window verwenden:

%Vor%     
RoToRa 01.09.2010 14:26
quelle
0

javascript global scope ist ein Fenster, so dass Sie schreiben können:

%Vor%

Jetzt können Sie es als window[funcName](); , window['varfuncname'](); oder varfuncname();

nennen     
aularon 01.09.2010 14:29
quelle
0

Sie müssen die Antworten von SLaks und RoToRa kombinieren:

%Vor%

Da Sie dies im dokumentbereiten Event-Handler ausführen, bezieht sich die Variable "this" auf das Dokument und nicht auf das Fenster.

    
Gooseus 01.09.2010 15:04
quelle
0

Ich denke, Sie versuchen etwas zu tun, was Sie in JavaScript nicht tun müssen. In PHP ist das Übergeben von Funktionen ein bisschen ein Kludon. In JavaScript ist es elegant und schmerzlos.

Wie planen Sie diese Funktionen später aufzurufen? Ich nehme an, dass Sie diese Funktionsnamen in den 'onclick'-Attributen fest in Ihren HTML-Code einprogrammiert haben. Es ist eine schlechte Idee, JavaScript in Ihren HTML-Code über die on* -Attribute fest zu codieren. Wenn Sie das tun, müssen Sie Variablen im globalen Bereich erstellen (eine andere Vorgehensweise, die am besten vermieden wird). Im Browser ist das globale Objekt window . Wenn Sie eine Eigenschaft in window definieren, ist die Funktion global verfügbar:

%Vor%

Dies setzt voraus, dass Sie onclick -Attribute in Ihrem HTML haben, die mit den Funktionsnamen übereinstimmen, die Sie erstellen.

Ein besserer Weg wäre, die Funktionen einfach so zu erstellen, wie Sie sie an die Ereignisse binden und ihnen niemals Variablen zuweisen:

%Vor%

Dadurch werden sowohl Ihr JavaScript als auch Ihr HTML kleiner und sauberer.

    
Neall 01.09.2010 15:08
quelle

Tags und Links