非常感谢您的阅读,
问题背景:在多个 Accordion 面板中使用spry的搜索功能。
我正在尝试使用eval
(因为这是我能想到的唯一方法)来完成这个简单的事情:
var ds1 = new Spry.Data.XMLDataSet("ajaxxmllogdaneiz1.php",'root/row]');
var ds2 = new Spry.Data.XMLDataSet("ajaxxmllogdaneiz2.php",'root/row]');
var str1="ds";
var str2= 1;
var result= str1.concat(str2);
//result is now ds1
eval ("result.filter(filterFunc)");
我希望调用ds1.filter(filterFunc)
,但调用了result.filter(filterFunc)
。
有没有办法使用 eval
或替代方案(Jquery?)调用 ds1.filter(filterFunc)
?
非常感谢
恐龙
最佳答案
你应该使用这个:
eval(result + ".filter(filterFunc)");
但您确实应该考虑根本不不进行评估
。我不明白为什么这会是明智的。如果必须的话,我建议将要操作的变量存储在已知的位置。例如:
var Foo = function() {
return {
"bar": function() {
console.log("baz");
}
}
};
var foo_list = {};
foo_list["foo"] = Foo();
var part_1 = "fo";
var part_2 = "o";
foo_list[part_1 + part_2].bar();
(您也可以通过这种方式将其存储在 window
中,但我也不建议这样做。)
关于javascript - javascript eval() 可以获取变量名称并在使用前替换它们吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14089388/