是的,我知道 eval 是邪恶的,但是......
有几次我看到一个函数以几种不同的方式从一个字符串创建:
var s = "function fname() { this.m = function(s){alert(s);}}";
//1
var x = new( eval("("+s+")") );
x.m("aaa")
//2
var x = new( eval('[' + s + ']')[0] );
x.m("bbb")
//3
var x = new ( eval(s + " fname;") );
x.m("ccc")
前两个对我来说很清楚,但我想知道第三个。有人可以解释如何在定义后添加函数名称有助于 eval 完成这项工作吗?您还知道使用 eval 创建函数的任何其他方法吗?
谢谢席蒙