如何解决JavaScript:重新定义链接到函数参数的对象
我是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”,因此该方法无效。有想法吗?
解决方法
如果返回结果,这可能很简单。
let a = alert
let b = console.log
function reset(cb){
//Here i'm just redefining "func" wich is a local argument
//The question is how can I redefine the function this argument is referencing?
return function(){
cb("gud")
}
}
a = reset(alert)
b = reset(console.log)
a("alert: bad")
b("console.log: bad")
,
也许这是您实际上正在尝试做的事情:
function reset(func){
// return a new function which overwrites what is passed in
return function(){
func("gud")
}
}
var a = reset(alert)
var b = reset(console.log)
a("alert: bad")
b("console.log: bad")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。