我开发了一个浏览器扩展,将补丁应用到原始功能,如下所示:
eval('sourceFunction=' + sourceFunction.toString().replace(/foo/g, 'bar'));
Mozilla附加组件目录的审阅者禁止将eval方法用作不安全方法。是否有其他方法可以对功能进行类似修补?
最佳答案
如果必须将原始函数的内容用作字符串,则不可以,可能不需要。
虽然可以使用new Function
代替:
sourceFunction = new Function("return " + sourceFunction.toString().replace(/*...*/))();
...任何禁止
eval
的明智政策也可能会禁止new Function
。