有一种方法来获得一个变量名作为字符串在Javascript?(类似于Cocoa中的NSStringFromSelector)

我想这样做:

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

--> myFirstName:John

更新

我正在尝试使用JavaScript连接浏览器和另一个程序。我想从浏览器发送实例名到另一个程序回调方法:

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

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

...

从另一个程序:

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

在PHP中: 如何在PHP中获得变量名作为字符串?


当前回答

从任何有效的Javascript(变量,类)获取一个字符串:

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

例子:

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

其他回答

出于安全考虑(变量可能为空),可能pop会比[0]索引更好。

const myFirstName = 'John' const variableName = Object.keys({myFirstName}).pop(); console.log('变量${variableName},值'${myFirstName}'); //返回变量myFirstName值为John

您可以使用以下解决方案来解决您的问题:

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

// returns "myFirstName"

这适用于Internet Explorer(9,10和11),谷歌Chrome 5:

var myFirstName = “Danilo”; var varName = Object.keys({myFirstName:0})[0]; console.log(varName);

浏览器兼容性表: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

不,没有。 此外,如果你能写变量名(myFirstName),你已经知道变量名(“myFirstName”)。

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

但是,我认为你应该像"karim79"