在猴子修补过程中如何替换eval()?

时间:2018-02-11 20:22:57

标签: javascript firefox-addon eval mozilla browser-extension

我开发了一个浏览器扩展,将补丁应用于原始函数,如下所示:

eval('sourceFunction=' + sourceFunction.toString().replace(/foo/g, 'bar'));

Mozilla附加组件目录的审稿人禁止使用eval方法作为不安全的方法。有没有其他方法来同样修补功能?

1 个答案:

答案 0 :(得分:1)

如果你必须将原始功能的内容用作字符串,那么不,可能不是。

虽然您可以使用new Function代替:

sourceFunction = new Function("return " + sourceFunction.toString().replace(/*...*/))();

......禁止eval的任何合理政策也可能会禁止new Function ..