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 ?

181voto

Fellow Stranger Points 1068

Vous pouvez utiliser la solution suivante pour résoudre votre problème :

const myFirstName = 'John'
Object.keys({myFirstName})[0]

// returns "myFirstName"

167voto

Donuts Points 1429

Comme la réponse de Seth, mais utilise Object.keys() au lieu de cela :

const varToString = varObj => Object.keys(varObj)[0]

const someVar = 42
const displayName = varToString({ someVar })
console.log(displayName)

58voto

SethWhite Points 1153

Dans ES6, vous pourriez écrire quelque chose comme :

let myVar = 'something';
let nameObject = {myVar};
let getVarNameFromObject = (nameObject) => {
  for(let varName in nameObject) {
    return varName;
  }
}
let varName = getVarNameFromObject(nameObject);

console.log(varName);

Ce n'est pas vraiment ce qu'il y a de plus beau, mais c'est ce qu'il y a de mieux.

Cela permet de tirer parti de la déstructuration des objets de l'ES6.

Plus d'informations ici : https://hacks.mozilla.org/2015/05/es6-in-depth-destructuring/

55voto

karim79 Points 178055

En règle générale, vous utilisez une table de hachage lorsque vous souhaitez associer un nom à une valeur et pouvoir récupérer les deux.

var obj = { myFirstName: 'John' };
obj.foo = 'Another name';
for(key in obj)
    console.log(key + ': ' + obj[key]);

44voto

wcoder Points 299

Obtenir une chaîne de caractères à partir de n'importe quel Javascript valide (variable, classe) :

const nameOf = (f) => (f).toString().replace(/[ |\(\)=>]/g,'');

Exemples :

nameOf(() => myVariable)             // myVariable
nameOf(() => myVariable.name)        // myVariable.name
nameOf(() => myVariable.name.length) // myVariable.name.length
nameOf(() => myVariable.name[10])    // myVariable.name[10]
nameOf(() => MySuperClass)           // MySuperClass

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