假设我有以下代码:
window.foo = function() {
bar();
function bar() {
console.log('hello');
}
}
/* insert monkey-patching code here */
foo();
我可以用什么代码替换 /* 在此处插入猴子修补代码 */
以使此例如在控制台上写 goodbye
而不是 hello
?
我尝试了以下方法来覆盖 bar
,但它不起作用:
window.foo = function() {
bar();
function bar() {
console.log('hello');
}
}
window.bar = function() {
console.log('goodbye');
}
window.foo.bar = function() {
console.log('goodbye');
}
foo();
最佳答案
你不能。
该函数存储在foo
内的局部变量中。无法从该函数外部访问它。
您需要:
- 替换整个
foo
- 重构
foo
,以便在更广泛的范围内声明bar
(并且可以从您想要更改它的位置进行访问)
关于javascript - 如何对另一个函数内声明的函数进行猴子修补,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59647878/