//window["Fluent"]["Include"]
function setGlobalVariableByName(name,value)
{
var indexes = name.split(".");
var variable = null;
$.each(indexes, function()
{
if (variable == null){
variable = window[this];
}else{
variable = variable[this];
}
});
variable = value;
}
setGlobalVariableByName("Fluent.Include.JqueryPulse",true);
console.log(Fluent.Include.JqueryPulse) // prints false
这显然不起作用。如果我只是想获得变量的值,但不能设置它,它会起作用。在JavaScript中通过字符串名称设置变量?
window["Fluent"]["Include"]["JqueryPulse"] = true;
console.log(Fluent.Include.JqueryPulse) // prints true
我怎么能达到这样的东西,而不使用eval?
我需要一些方法来数组索引编程方式添加到这一点,我猜
下面的作品,你可以提出一个更好的办法了,为了使它更干代码?
function setGlobalVariableByName(name,value)
{
var indices = name.split(".");
var parent;
$.each(indices, function(i)
{
if(i==indices.length-1){
if (!parent){
window[this] = value;
}else{
parent[this] = value;
}
}else if (!parent){
parent = window[this];
}else{
parent = variable[this];
}
});
}
setGlobalVariableByName : function(name, value)
{
var indices = name.split(".");
var last = indices.pop();
var parent;
$.each(indices, function(i)
{
if (!parent){
parent = window[this];
}else{
parent = variable[this];
}
});
if (!parent){
window[last] = value;
}else{
parent[last] = value;
}
}
他们确实存在,我只是这样解释它的问题。变量'Fluent.Include.JqueryPulse'已经存在,其值为假,我想将其设置为true。但我不需要初始化任何东西 – bevacqua
以下是不同的版本:http://jsfiddle.net/3WtJM/2/ –
@Nico - 你说过,“变量Fluent.Include.JqueryPulse已经存在了...”小心你不要跺脚那些已经存在的物品,因为你会失去它们的属性。查看我的回答和代码注释以避免此问题。 – JAAulde