Javascript lokale Variable deklarieren

8

Im Grunde ist dies eine Frage, wie man auf den lokalen Bereichshandler zugreift. Ich versuche etwas Ähnliches für die globale Variablendefinition wie:

zu erreichen %Vor%

aber für den lokalen Bereich. Im Moment verwende ich nur die Lösung:

%Vor%

Aber das ist wirklich eine hässliche Lösung ... Das Beste wäre, einen Verweis auf den lokalen Bereich zu verwenden, wie in einer Fenster [] Lösung, aber ich habe nie von einem Verweis auf den lokalen Bereich gehört ... Irgendwelche Ideen?

Beispiel geht hier:

%Vor%     
Wilq32 13.07.2009, 13:06
quelle

8 Antworten

1

Okey Ich habe verwandte Frage gefunden, die darüber spricht, was ich brauche ...

Wie kann ich den lokalen Bereich dynamisch in Javascript aufrufen?

Ich erinnere mich nur daran, dass in ECMA 262 nur eine Möglichkeit besteht, dynamisch lokale Variablen zum Bereich hinzuzufügen, der "with" -Anweisung (und eval natürlich) verwendet, hier ist die Lösung:

%Vor%     
Wilq32 13.07.2009, 13:23
quelle
6

Was Sie suchen, heißt call-Objekt . Aber nach dies , Sie können nicht direkt zugreifen, so dass Sie aus sind von Glück.

    
JW. 13.07.2009 15:00
quelle
1

Warum erstellen Sie kein Objekt im lokalen Bereich und verwenden es dann als Container für alle Variablen, die Sie dynamisch erstellen möchten?

%Vor%     
Sebastian Celis 13.07.2009 13:20
quelle
1

Ich muss etwas verpassen. Wie ist das, was Sie wollen, anders als nur zu tun:

%Vor%

? (OP hat Frage geklärt)

Ich glaube nicht, dass es eine Möglichkeit gibt, das zu tun, was Sie fragen. Verwenden Sie Mitglieder eines lokalen Objekts, z. B.

%Vor%

Wenn Sie eine 1-stellige Variable wie $ oder X wählen, "kostet" das 2 Zeichen (Variablenname plus ein Punkt) und vermeidet, eval zu verwenden oder etwas Seltsames zu tun.

    
Jason S 13.07.2009 13:09
quelle
1

Sie könnten den Trick mit den genannten Argumenten ausprobieren EDIT: Dies ist nicht Cross-Browser

%Vor%     
meouw 13.07.2009 13:57
quelle
1

Nicht sicher, was Sie genau brauchen, aber hier sind meine 2 Cent.

Die einzige Möglichkeit, in einer vorhandenen Funktion vars dynamisch zu erstellen, ist die eval-Methode, die Sie bereits erwähnt haben.

Eine andere Option (von anderen erwähnt) ist, dass Ihre Funktion eine Kontextkarte verwendet und die Vorlage mit Punktnotation (context.var1)

darauf zugreift

Mein letzter Vorschlag ist der Konstruktor Function. Aber ich habe das Gefühl, dass dies das ist, wonach Sie suchen. (Beachten Sie, dass der Funktionskonstruktor unter den gleichen Problemen wie ein Eval-Aufruf leidet)

%Vor%

Hoffe es hilft

    
Juan Mendes 01.03.2010 20:12
quelle
0

Interessante Frage, die nie an so etwas gedacht hat. Aber was ist der Anwendungsfall?

Der Grund, warum Sie so etwas tun möchten, ist, wenn Sie den Namen der Variablen nicht kennen. Aber in diesem Fall wäre die einzige Möglichkeit, wieder auf die Variable zuzugreifen, die Verwendung desselben Referenzobjekts. I.e. Sie könnten einfach jedes alte Objekt zum Speichern von Daten verwenden.

Das Lesen eines solchen Referenzobjekts wäre für Debugging-Zwecke interessant, aber ich verstehe nicht, warum Sie darauf schreiben möchten.

Bearbeiten:

Das von Ihnen gepostete Beispiel überzeugt mich nicht von der Notwendigkeit des Zugriffs auf den lokalen Bereich, da Sie in der Warnung immer noch den Namen sex hart codiert haben. Dies könnte wie folgt implementiert werden:

%Vor%

Können Sie das Beispiel näher erläutern?

    
Tom Lokhorst 13.07.2009 13:19
quelle
-1

Ich bin mir nicht ganz sicher, ob ich deine Frage verstehe. Wenn ich eine Klasse x erstelle, mache ich das im Allgemeinen:

%Vor%

Sie können weiterhin auf _self und args zugreifen, da es durch die enthaltenen Funktionen geschlossen ist.

    
Jacob Lauzier 13.07.2009 13:26
quelle