如果我希望一个函数在第一次运行时执行不同的操作,我可以在每次运行时检查以确定是否是第一次,或者我可以更改该函数;像这样的东西:
foo=function(a,b){
...do something1...
foo=_foo;
}
_foo=function(a,b){
...do something2...
}
这很糟糕吗?如果是这样,为什么?有一个更好的方法吗?我特别希望在 JavaScript 中实现这一点,但也会考虑其他语言点。
最佳答案
从严格意义上来说,这不是一个“自修改”函数 - 您不会动态修改任何代码(这会很糟糕),只需将另一个值分配给函数名称。这在大多数情况下都很好,并且使多态代码变得非常简单和优雅。为了使意图更清晰,您可以将“第一次”代码分解为单独的函数:
function firstTimeFoo() {
.....
foo = normalFoo
}
function normalFoo() {
...
}
foo = firstTimeFoo
关于javascript - 自修改功能不好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20957970/