如何在JavaScript中检索变量的名称
How do I retrieve the name of a variable in JavaScript
好吧,假设我有各种各样的变量:
tab = document.createOjbect('table');
str = 'asdf';
ary = [123, 456, 789];
obj = {a:123, b:456, c:789};
一段"字符串化"它们的代码:
function Stringify(){
var con = this.constructor.name;
if(con == 'String') return this;
if(con == 'Arrray') return this.toString();
if(con == 'Object') return JSON.stringify(this);
if(con == 'HTMLTableElement') return this.outerHTML;
}
包含变量的数组:
var aVar = [tab, str, ary, obj];
我循环数组以"字符串化"其内容:
for(var i in aVar){
console.log(
Stringify.call( aVar[i] );
);
}
我得到了预期的字符串对象列表:
<table></table>
asdf
123,456,789
{"a":123,"b":456,"c":789}
但是,如果我想在日志中包含变量的名称,该怎么办?:
tab: <table></table>
str: asdf
ary: 123,456,789
obj: {"a":123,"b":456,"c":789}
我该怎么做?:
for(var i in aVar){
var id = // get the name of the variable at aVar[i]
console.log(
id + ': ',
Stringify.call( aVar[i] );
);
}
这是不可能的,也没有真正的意义。您必须理解函数操作值,而不是变量。
执行此操作时:
var aVar = [tab, str, ary, obj];
数组中放入的是值,而不是变量,尽管从语法上看是这样。这些值对引用它们的变量一无所知。
想想看:一个值可以被几个变量引用。获取在早些时候引用过它的变量(其中一个)的名称有什么意义?
恐怕您的用例的唯一解决方案是在执行流中携带"变量名",或者对每个变量的逻辑进行硬编码。
相关文章:
- 为什么可以't我将检索到的文档分配给控制台中的变量
- Chrome扩展:Can't从chrome.local变量中检索值
- 无法在函数中检索全局变量的值
- 检索本身包含变量的 Jquery 变量名的值
- 使用 Javascript 或 jQuery 检索会话变量的简单快捷的方法
- 调用c#函数从传递javascript变量的javascript中检索数据
- 如何检索jquery ajax对php变量的响应
- 如何在JavaScript中检索变量的名称
- 如何从Mysql检索变量并在JS中的函数中使用它
- 检索在onchange javascript事件中创建的javascript变量
- jQuery,用于检索数据的变量
- AJAX来检索对象并将其存储在变量中
- 在 Success 函数中检索多个值并将它们存储到 javascript 变量中
- 尝试检索变量以检查表单是否有效
- Javascript 正则表达式从句子中检索变量
- 如何将使用 getter 检索到的 Ember 数据放入临时变量中进行处理
- 在 Express 中检索多个变量
- 从 JavaScript 传递后无法检索变量
- 在angular中,我如何将输入变量检索到javascript控制器上?
- 变量检索JSON