是否可以在不使用 eval 的情况下制作这样的东西?
foo1 = {"x": 4};
foo2 = {"x": "someFunc(foo1.x)"};
someFunc(var1)
{
return (var1 + 1);
}
alert(foo1.x); // 4
alert(foo2.x); // 5 (hopefully)
其实这是两个问题。第一个是执行一个函数,第二个是不带括号执行,因为在循环中我不知道它是 foo2.x 还是 foo2.x()。
我能想到的最好的事情是在 JSON 对象中搜索表示函数的关键字,并使用开关列表来执行它们并将关键字替换为值。
缺点是每次发生变化时我都需要更新 JSON 对象。