fis*_*ato 134 javascript
有没有办法在Javascript中将变量名称作为字符串?(比如Cocoa中的NSStringFromSelector)
我想这样做:
var myFirstName = 'John';
alert(variablesName(myFirstName) + ":" + myFirstName);
--> myFirstName:John
Run Code Online (Sandbox Code Playgroud)
- 添加
我正在尝试使用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();
...
Run Code Online (Sandbox Code Playgroud)
....
[来自其他节目]
evaluateJavascriptInBrowser("(instanceName).someMethod("resultA");");
Run Code Online (Sandbox Code Playgroud)
在PHP中:如何在PHP 中将变量名称作为字符串?
Don*_*uts 65
像Seth的回答一样,但Object.keys()改为使用:
const varToString = varObj => Object.keys(varObj)[0]
const someVar = 42
const displayName = varToString({ someVar })
console.log(displayName)Run Code Online (Sandbox Code Playgroud)
kar*_*m79 52
通常,您可以将哈希表用于要将名称映射到某个值的情况,并且能够检索两者.
var obj = { myFirstName: 'John' };
obj.foo = 'Another name';
for(key in obj)
console.log(key + ': ' + obj[key]);Run Code Online (Sandbox Code Playgroud)
Fel*_*ger 40
您可以使用以下解决方案来解决您的问题:
const myFirstName = 'John'
Object.keys({myFirstName})[0]
// returns "myFirstName"
Run Code Online (Sandbox Code Playgroud)
Set*_*ite 36
在ES6中,您可以编写如下内容:
let myVar = 'something';
let nameObject = {myVar};
let getVarNameFromObject = (nameObject) => {
for(let varName in nameObject) {
return varName;
}
}
let varName = getVarNameFromObject(nameObject);
Run Code Online (Sandbox Code Playgroud)
不是最好看的东西,但它完成了工作.
这利用了ES6的对象解构.
更多信息:https://hacks.mozilla.org/2015/05/es6-in-depth-destructuring/
clo*_*ink 18
var x = 2;
for(o in window){
if(window[o] === x){
alert(o);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我认为你应该像"karim79"那样做
Bru*_*oLM 16
这适用于基本表达式
const nameof = exp => exp.toString().match(/[.](\w+)/)[1];
Run Code Online (Sandbox Code Playgroud)
例
nameof(() => options.displaySize);
Run Code Online (Sandbox Code Playgroud)
片段:
var nameof = function (exp) { return exp.toString().match(/[.](\w+)/)[1]; };
var myFirstName = 'Chuck';
var varname = nameof(function () { return window.myFirstName; });
console.log(varname);Run Code Online (Sandbox Code Playgroud)
Jua*_*dán 10
为了安全起见,pop可能比用[0]索引更好(为了安全起见,变量可能为null)。
const myFirstName = 'John'
const variableName = Object.keys({myFirstName}).pop();
console.log(`Variable ${variableName} with value '${variable}'`);
// returns "Variable myFirstName with value 'John'"
Run Code Online (Sandbox Code Playgroud)
wco*_*der 10
从任何有效的 Javascript(变量、类)中获取字符串:
const nameOf = (f) => (f).toString().replace(/[ |\(\)=>]/g,'');
Run Code Online (Sandbox Code Playgroud)
例子:
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
Run Code Online (Sandbox Code Playgroud)
var somefancyvariable = "fancy";
Object.keys({somefancyvariable})[0];
Run Code Online (Sandbox Code Playgroud)
这不能成为函数,因为它返回函数变量的名称
// THIS DOESN'T WORK
function getVarName(v) {
return Object.keys({v})[0];
}
// Returns "v"
Run Code Online (Sandbox Code Playgroud)
到目前为止,我发现将变量名称作为字符串获取的最短方法:
const name = obj => Object.keys(obj)[0];
const whatsMyName = "Snoop Doggy Dogg";
console.log( "Variable name is: " + name({ whatsMyName }) );
//result: Variable name is: whatsMyNameRun Code Online (Sandbox Code Playgroud)
从ECMAScript 5.1开始,您可以使用Object.keys从对象中获取所有属性的名称.
这是一个例子:
// Get John’s properties (firstName, lastName)
var john = {firstName: 'John', lastName: 'Doe'};
var properties = Object.keys(john);
// Show John’s properties
var message = 'John’s properties are: ' + properties.join(', ');
document.write(message);Run Code Online (Sandbox Code Playgroud)
使用 Object.keys() 的最佳方法;
示例:用于在全局范围内获取多变量名称
// multi variables for testing
var x = 5 , b = true , m = 6 , v = "str";
// pass all variables you want in object
function getVarsNames(v = {}){
// getting keys or names !
let names = Object.keys(v);
// return array contain all names of variables
return names;
}
// testing if that work or not
let VarsNames = getVarsNames({x , b , m , v});
console.log(VarsNames); // output is array [x , b , m , v]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
126157 次 |
| 最近记录: |