有一种方法来获得一个变量名作为字符串在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中获得变量名作为字符串?
使用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]
对于那些想打印variableName和variableValue用于调试的人,这里有一个函数:
const printNameValue = (v)=> {
var varName = (v).toString().replace(/[ |\(\)=>]/g, '')
var varValue = (v)()
// neat : console.log(varName,varValue);
// with some coloring :
console.log("\033[1;96m[\033[1;33m " + varName + " :\033[0;0m " + varValue+"\033[1;96m ]\033[0;0m");
}
例子:
const myNiceVariable = 1234
叫:
printNameValue(()=> myNiceVariable )
结果:
使用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]