几天前,我问了一个关于在外部脚本执行过程中动态修改函数代码的问题,我被告知完全忘记了这个概念.我不确定我明白为什么会这样.让我举个例子:
我意识到这是一个相当简单的例子,但肯定会有一些用法可以从动态修改函数中获得,这本身就是非常有用的.
虽然这可能会做你需要它做的事情,但是从现在开始6个月你(或维护代码的人)将会"WTF?!"
如果您的用例是基于某些条件提醒或写入,为什么不编写两个不同的功能?或者让您的函数采用另一个决定输出模式的参数.或者将函数作为执行实际输出的参数传递.东西,你知道的,一点点更多的理智的一面.;-)
在某些情况下,更改函数的行为可能会有用,但有更好的方法可以实现.在您的示例中,您可以通过将函数作为参数传递(类似于策略模式)来创建以不同方式处理输出的函数的新实例:
function makeDisplay(displayStrategy) { return function(msg) { // I'm assuming you would do some additional processing here... displayStrategy(msg); } } var display = makeDisplay(alert); // now modify display to use document.write display = makeDisplay(function(msg) { document.write(msg); });