我有以下变量:
var opday = [],
opcategory = [],
opbarrio = [];
然后我在其他地方:
var myparent = $me.parent().attr('data-filter-group');
假设myparent返回“category”,如何从该字符串创建一个引用变量opcategory
的对象?
例如:
var myarray = "op" + myparent;
所以我可以像这样使用那个对象:
alert(myarray[2]);
谢谢!
答案 0 :(得分:3)
我认为对象是最佳解决方案:
var op = {
day: [],
category: [],
barrio: []
};
您可以这样引用:
var myarray = op[myparent];
还有一个不那么优雅(阅读:邪恶和hacky)的解决方案只有在opday
和其他全局变量时才有效。所有全局变量都是window
对象的属性,允许您动态创建和访问变量:
var myarray = window["op" + myparent];
答案 1 :(得分:2)
如果您需要按名称访问全局变量,请执行以下操作:
var myarray = window["op"+myparent];
但将所有这些内容放入 map 对象会好得多。
答案 2 :(得分:2)
您可以将在全局范围内声明的变量解决为:
var myCustomVar = "my value"
, nameOfVar = "myCustomVar"
alert(this[nameOfVar])
// you get "my value"
但是,如果您将其粘贴在函数内部,则不起作用:
var answer = (
function(){
var myvar = "the value"
return this["myvar"]
}
).call({})
// answer will be 'undefined'
将范围变量明确地绑定到this
仍可以:
var answer = (
function(){
this.myvar = "the value"
return this["myvar"]
}
).call({})
// 'answer' will be "the value"