有一种方法来获得一个变量名作为字符串在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中获得变量名作为字符串?


当前回答

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

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

其他回答

这适用于基本表达式

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

例子

nameof(() => options.displaySize);

代码片段:

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

在ES6中,你可以这样写:

让 myVar = '某物'; let nameObject = {myVar}; let getVarNameFromObject = (nameObject) => { for(let varName in nameObject) { 返回变量名称; } } let varName = getVarNameFromObject(nameObject); console.log(varName);

虽然不是最好看的,但它能完成任务。

这利用了ES6的对象解构。

更多信息请访问:https://hacks.mozilla.org/2015/05/es6-in-depth-destructuring/

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

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

// returns "myFirstName"

使用Object.keys()的最佳方式;

示例:在全局作用域中获取多个变量名

//多个变量进行测试 Var x = 5, b = true, m = 6, v = "str"; //在object中传递你想要的所有变量 函数getVarsNames(v = {}){ //获取钥匙或名字! let names = Object.keys(v); //返回数组包含所有变量名 返回名称; } //测试是否工作 let VarsNames = getVarsNames({x, b, m, v}); console.log (VarsNames);//输出数组[x, b, m, v]

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