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%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%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% Ich muss etwas verpassen. Wie ist das, was Sie wollen, anders als nur zu tun:
? (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.
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 zugreiftMein 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
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:
Können Sie das Beispiel näher erläutern?
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.
Tags und Links javascript variables definition local