javascript eval()可以取变量名并在使用前替换它们吗?
Can javascript eval() take variables name and replace them before using
非常感谢您的阅读,
问题背景:在多个手风琴面板中使用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)
。是否有一种方法ds1.filter(filterFunc)
被称为eval
或替代品(Jquery?)?非常感谢恐龙
你应该使用这个:
eval(result + ".filter(filterFunc)");
但是你真的应该考虑不 eval
。我看不出这有什么可取之处。如果必须这样做,我建议将要操作的变量存储在一个已知的位置。例如:
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
中,但我也不建议这样做。)
如果你要访问的变量在全局作用域中,那么你可以使用:
var result = 'ds1';
window[result].filter(filterFunc);
要使用result
的值而不是"result"
本身,您可以:
eval (result+".filter(filterFunc)");
除非执行完全任意的代码,否则不需要使用eval。
您可能希望将XMLDataSet
s存储在数组中。
var datasets = [];
for (var n=1; n<=2; n++) {
datasets.push(new Spry.Data.XMLDataSet("ajaxxmllogdaneiz" + n + ".php", "root/row"));
}
for (var i=0; i<datasets.length; i++) {
var ds = datasets[i];
ds.filter(filterFunc);
}
相关文章:
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 我如何找到一个句子中的所有空格并替换忽略它们
- 如何用更合适的内容替换document.write
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 递归使用 eval() 是检查程序执行的好方法吗?
- 在DOM中查找一个模式并替换它's的内容使用jquery
- 为什么忽略了eval()代码中的语法错误
- 用空格替换下划线PHP
- str.split(someString).join(someOtherString)是否等效于替换
- 使用javascript的图像替换循环
- window.location替换并传递URL历史记录条目中的变量
- 推荐在JavaScript中执行存储为字符串的函数,而不是使用eval
- 替换标记中的属性
- 指令的模板必须只有一个根元素:With restrict E&替换true
- AngularJs对ng消息的自定义替换
- 解释$apply和$eval |我可以用其他功能替换它们吗 |AngularJS.
- 替换 eval 以 JavaScript 形式获取值
- 替换 eval() 方法
- 替换 eval 的最佳方法是什么?
- javascript eval()可以取变量名并在使用前替换它们吗?