JavaScript:重新定义链接到函数参数的对象
JavaScript: redefine the object linked to a function parameter
我是 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”,因此此方法无效。有什么想法吗?
如果您 return 结果,这可能很简单。
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")
我是 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”,因此此方法无效。有什么想法吗?
如果您 return 结果,这可能很简单。
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")