javascript - javascript eval() 可以获取变量名称并在使用前替换它们吗

标签 javascript jquery spry

非常感谢您的阅读,

问题背景:在多个 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();

fiddle

(您也可以通过这种方式将其存储在 window 中,但我也不建议这样做。)

关于javascript - javascript eval() 可以获取变量名称并在使用前替换它们吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14089388/

相关文章:

javascript - LESS - 在客户端设置变量

javascript - 如何在不更改 DOM 的情况下在 javascript 中获取标签位置

javascript - 带有 XmlHttpRequest 的 DataURI

javascript - 使用浏览器放大和缩小时,如何阻止 spry 菜单换行?

css - Spry 验证文本字段在谷歌浏览器中显示不佳

javascript - 确保在动态更改 jquery 时加载图像

jquery - 异步加载 Google 地点

javascript - 使用javascript从另一个网站获取html元素?

jquery - 使用jquery获取时间选择器

javascript - 使用 Spry 在打开的选项卡上加载内容