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

cl("zox");

function cl(c) {
    console.log(c + ': ' + this[c]); // zox: 150    
}

其他回答

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

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

从ECMAScript 5.1开始,你可以使用Object。键从对象中获取所有属性的名称。

这里有一个例子:

//获取John的属性(firstName, lastName) var john = {firstName: ' john ', lastName: 'Doe'}; var属性= Object.keys(john); //显示John的属性 var message = 'John的属性是:' +属性。加入(" "); document . write(消息);

在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/

我迄今为止发现的获取变量名为字符串的最短方法:

Object.keys(obj)[0]; const whatsMyName = "Snoop Doggy Dogg"; console.log("变量名是:" + name({whatsMyName})); //结果:变量名是:whatsMyName

你可以在javascript中反映类型,并获得属性和方法的名称,但你需要的是。net中的Lambda表达式树,我认为这是不可能的,因为javascript中缺乏动态的类型系统。