258 votes

Nom de variable en tant que chaîne de caractères en Javascript

Existe-t-il un moyen d'obtenir le nom d'une variable sous forme de chaîne de caractères en Javascript ? (comme NSStringFromSelector en Cacao )

J'aimerais faire comme cela :

var myFirstName = 'John';
alert(variablesName(myFirstName) + ":" + myFirstName);

--> myFirstName:John

MISE À JOUR

J'essaie de connecter un navigateur et un autre programme en utilisant JavaScript. J'aimerais envoyer des noms d'instance d'un navigateur à un autre programme pour la méthode de rappel :

FooClass = function(){};
FooClass.someMethod = function(json) {
  // Do something
}

instanceA = new FooClass();
instanceB = new FooClass();
doSomethingInAnotherProcess(instanceB); // result will be substituted by using instanceB.someMethod();

...

D'un autre programme :

evaluateJavascriptInBrowser("(instanceName).someMethod("resultA");");

En PHP : Comment obtenir le nom d'une variable sous forme de chaîne de caractères en PHP ?

24voto

Juangui Jordán Points 1078

Il serait probablement préférable d'utiliser pop plutôt que [0] pour des raisons de sécurité (la variable peut être nulle).

const myFirstName = 'John'
const variableName = Object.keys({myFirstName}).pop();
console.log(`Variable ${variableName} with value '${myFirstName}'`);

// returns "Variable myFirstName with value 'John'"

20voto

cloverink Points 190
var x = 2;
for(o in window){ 
   if(window[o] === x){
      alert(o);
   }
}

Cependant, je pense que vous devriez faire comme "karim79"

19voto

BrunoLM Points 26573

Cela fonctionne pour les expressions de base

const nameof = exp => exp.toString().match(/[.](\w+)/)[1];

Exemple

nameof(() => options.displaySize);

Extrait :

var nameof = function (exp) { return exp.toString().match(/[.](\w+)/)[1]; };
var myFirstName = 'Chuck';
var varname = nameof(function () { return window.myFirstName; });
console.log(varname);

13voto

Cadiboo Points 145
var somefancyvariable = "fancy";
Object.keys({somefancyvariable})[0];

Cette fonction ne peut pas être transformée en fonction car elle renvoie le nom de la variable de la fonction.

~~// THIS DOESN'T WORK function getVarName(v) { return Object.keys({v})[0]; } // Returns "v"~~

Edit : Merci à @Madeo para en indiquant comment en faire une fonction .

function debugVar(varObj) {
    var varName = Object.keys(varObj)[0];
    console.log("Var \"" + varName + "\" has a value of \"" + varObj[varName] + "\"");
}

Vous devrez appeler la fonction avec un tableau à un seul élément contenant la variable. debugVar({somefancyvariable});
Editer : Object.keys peut être référencée en tant que keys dans tous les navigateurs que j'ai testés, mais d'après les commentaires, il ne fonctionne pas partout.

12voto

Sebastian Knopp Points 450

Le moyen le plus court que j'ai trouvé jusqu'à présent pour obtenir le nom des variables sous forme de chaîne de caractères :

const name = obj => Object.keys(obj)[0];

const whatsMyName = "Snoop Doggy Dogg";

console.log( "Variable name is: " + name({ whatsMyName }) );
//result: Variable name is: whatsMyName

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X