Gibt es eine Möglichkeit, einen Variablennamen als Zeichenfolge in Javascript abzurufen? (mögenNSStringFromSelector
in Kakao )
Ich würde gerne so machen:
var myFirstName = 'John';
alert(variablesName(myFirstName) + ":" + myFirstName);
--> myFirstName:John
AKTUALISIEREN
Ich versuche, einen Browser und ein anderes Programm mit JavaScript zu verbinden. Ich möchte Instanznamen von einem Browser an ein anderes Programm zur Rückrufmethode senden:
FooClass = function(){};
FooClass.someMethod = function(json) {
// Do something
}
instanceA = new FooClass();
instanceB = new FooClass();
doSomethingInAnotherProcess(instanceB); // result will be substituted by using instanceB.someMethod();
...
Aus einem anderen Programm:
evaluateJavascriptInBrowser("(instanceName).someMethod("resultA");");
In PHP: Wie erhalte ich einen Variablennamen als String in PHP?
javascript
Fischkartoffel
quelle
quelle
variablesName(myFirstName)
, kennen Sie den Variablennamen bereits." Ich versuche es, aber ich kann nicht ...console.log("myvar = " + myvar);
für jede Variable immer wieder manuell eingeben .Antworten:
In der Regel verwenden Sie eine Hash-Tabelle für Situationen, in denen Sie einen Namen einem bestimmten Wert zuordnen und beide abrufen möchten.
quelle
obj
werdenname: value
paarweise gedruckt . Der erklärende Text könnte jedoch klarer sein.Wie Seths Antwort, verwendet aber
Object.keys()
stattdessen:quelle
Sie können die folgende Lösung verwenden, um Ihr Problem zu lösen:
quelle
In ES6 können Sie Folgendes schreiben:
Nicht wirklich das am besten aussehende Ding, aber es erledigt den Job.
Dies nutzt die Objektzerstörung von ES6.
Weitere Informationen hier: https://hacks.mozilla.org/2015/05/es6-in-depth-destructuring/
quelle
let nameObject = {myVar}
so nützlich! Sie scheint nirgendwo dokumentiert zu sein. Haben Sie irgendwelche Links?Ich denke jedoch, Sie sollten "karim79" mögen
quelle
x = 2; y = 2;
oderx = {a:1}; b = x;
es jeden von ihnen alarmieren würdevar foo = function f(){ f.x = 2; for(o in f){ if(f[o]===f.x) alert(o); } }
f()
Dies funktioniert für grundlegende Ausdrücke
Beispiel
Snippet:
quelle
Wahrscheinlich wäre Pop aus Sicherheitsgründen besser als die Indizierung mit [0] (Variable könnte null sein).
quelle
Dies kann nicht zu einer Funktion gemacht werden, da der Name der Funktionsvariablen zurückgegeben wird.Bearbeiten: Vielen Dank an @Madeo für den Hinweis, wie man daraus eine Funktion macht .
Sie müssen die Funktion mit einem einzelnen Elementarray aufrufen, das die Variable enthält.
debugVar({somefancyvariable});
Bearbeiten:
Object.keys
kann als einfach bezeichnet werdenkeys
in jedem Browser, in dem ich es getestet habe aber laut den Kommentaren funktioniert es nicht überall.quelle
const getVarName = (v) => Object.keys(v)[0];
und dann die Funktion so aufrufengetVarName({whatEverVariable})
Seit ECMAScript 5.1 können Sie verwenden Object.keys verwenden , um die Namen aller Eigenschaften eines Objekts .
Hier ist ein Beispiel:
quelle
Wenn eine Funktion eine Funktion schreibt, die verschiedene globale Variablenwerte ändert, ist dies nicht immer mein Vorname, sondern das, was gerade passiert. Versuchen Sie, dass dies für mich funktioniert hat.
Laufen Sie in jsfiddle
Schreibt in das Fenster 'Jack'.
quelle
Sie können über Typen in Javascript nachdenken und den Namen der Eigenschaften und Methoden abrufen. Was Sie jedoch benötigen, ist etwas wie
Lambda Expressions Trees
in .NET. Ich denke, dies ist aufgrund der Dynamik und des Fehlens eines statischen Typsystems in Javascript nicht möglich.quelle
Ich brauchte das, wollte keine Objekte verwenden und fand die folgende Lösung, um die Frage umzudrehen.
Anstatt den Variablennamen in eine Zeichenfolge umzuwandeln, konvertiere ich eine Zeichenfolge in eine Variable.
Dies funktioniert natürlich nur, wenn der Variablenname bekannt ist.
Nimm das:
Dies sollte Folgendes anzeigen:
Dies kann folgendermaßen geschehen:
Also benutze ich den String
"height"
und verwandle ihnheight
mit demwindow[]
Befehl in eine Variable .quelle
window
Objekts, da die gleichnamige Variable im Fensterbereich deklariert wurde. Dies funktioniert nur, wenn die Variable im Fensterbereich deklariert ist, nicht in einer Funktion / einem Abschluss.Kurzer Weg, den ich bisher gefunden habe, um den Variablennamen als String zu erhalten:
quelle
Dies funktionierte mit Internet Explorer (9, 10 und 11), Google Chrome 5:
Browserkompatibilitätstabelle:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
quelle
Ich habe diese Funktion basierend auf JSON erstellt, wie von jemandem vorgeschlagen, und funktioniert gut für meine Debug-Anforderungen
quelle
Nein, da ist kein.
Wenn Sie schreiben können
variablesName(myFirstName)
, kennen Sie außerdem bereits den Variablennamen ("myFirstName").quelle
nameof(myVariable)
in C # (die eine Zeichenfolge "myVariable" zurückgibt, besteht auch darin, sich vor Fehlern beim Refactoring oder bei anderen Änderungen am Code zu schützen. Ein häufiger Anwendungsfall besteht darin, den Namen der Variablen zu einer Fehlermeldung hinzuzufügen, die ausgelöst wird Die meisten Teile halte ich für String-Literale als Code-Geruch und vermute, dass zumindest Visual Studio sie deshalb in einer rot / orange Farbe anzeigt. Ich weiß, ich weiß, diese Frage bezieht sich auf Javascript, aber ich habe nur erklärt, warum ich hier geendet habe.console.log('test')
oder wann du es wirklich brauchst.