JavaScript:重新定义链接到函数参数的对象

JavaScript:重新定义链接到函数参数的对象,javascript,overwrite,Javascript,Overwrite,我是JavaScript新手,我已经在这方面停留了一段时间。我从没想过这会成为一个问题,但我在这里。 这是我的密码: a = alert b = console.log function reset(func, cb){ //Here I'm just redefining "func" which is a local argument //The question is how can I redefine the function this argu

我是JavaScript新手,我已经在这方面停留了一段时间。我从没想过这会成为一个问题,但我在这里。 这是我的密码:

a = alert
b = console.log

function reset(func, cb){

    //Here I'm just redefining "func" which is a local argument
    //The question is how can I redefine the function this argument is referencing?

    func = function(){
        cb("gud")
    }
}

reset(a, alert)
reset(b, console.log)

a("alert: bad")
b("console.log: bad")
我希望alert和console.log都被我的新函数覆盖。
该值应等于alert(“gud”)和console.log(“gud”)。我尝试评估它,它对警报有效,但由于console.log的名称仅为“log”,此方法无法工作。有什么想法吗?

如果返回结果,这可能很简单

让a=警报
设b=console.log
功能复位(cb){
//这里我只是重新定义“func”,它是一个局部参数
//问题是我如何重新定义这个参数所引用的函数?
返回函数(){
cb(“gud”)
}
}
a=重置(警报)
b=重置(console.log)
a(“警报:坏”)

b(“console.log:bad”)
也许这就是您实际想要做的:

功能重置(func){
//返回覆盖传入内容的新函数
返回函数(){
func(“gud”)
}
}
变量a=重置(警报)
var b=重置(console.log)
a(“警报:坏”)

b(“console.log:bad”)
这是不可能的。函数参数是按值传递的,分配给局部变量对调用方的变量没有影响。这是不可能的。这闻起来很像你真正想要解决的需要重新定义函数的问题?@VLAZ我只是想动态覆盖functions@HellProtection但是为什么呢?你想要的是不可能的。除了需要付出更多努力才能完成的极端黑客。是的,这就是我要做的。从我得到的回答来看,这似乎不可能按我的方式进行。这并不能完全解决问题,但到目前为止,这是我能做的最好的了。非常感谢。