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

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


Mozilla附加组件目录的审阅者禁止将eval方法用作不安全方法。是否有其他方法可以对功能进行类似修补?

最佳答案

如果必须将原始函数的内容用作字符串,则不可以,可能不需要。

虽然可以使用new Function代替:

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


...任何禁止eval的明智政策也可能会禁止new Function

10-06 04:30