MrM*_*age 0 javascript monkeypatching
假设我有以下代码:
window.foo = function() {
bar();
function bar() {
console.log('hello');
}
}
/* insert monkey-patching code here */
foo();
Run Code Online (Sandbox Code Playgroud)
我可以用什么代码替换/* insert monkey-patching code here */以使其例如写入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();
Run Code Online (Sandbox Code Playgroud)
你不能。
该函数存储在一个局部变量里面foo。无法从该函数外部访问它。
您需要:
foofoosobar是在更广泛的范围内声明的(并且可以从您想要更改的位置访问它)| 归档时间: |
|
| 查看次数: |
262 次 |
| 最近记录: |