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

这应该显示:

height: 120

可以这样做:

function testAlert(ta)
{
    a = window[ta];
    alert(ta + ': ' + a); 
}

var height = 120;
testAlert("height");
// displays: height: 120

所以我使用字符串“height”,并使用window[]命令将其转换为可变高度。

其他回答

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

通常,当您希望将名称映射到某个值,并且能够检索两者时,您将使用哈希表。

var obj ={我的名字:'john'}; obj。foo = '另一个名称'; 用于(输入obj) console.log(key+':'+obj[key]);

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

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

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