我有一个看起来像这样的函数:
function outer() {
function inner_1() {
alert('inner_1');
}
function inner_2() {
alert('inner_2');
}
function inner_3() {
alert('inner_3');
}
inner_1();
inner_2();
inner_3();
}
我需要致电outer()
,但我想将inner_1()
替换为其他功能。
我试过这个:
new_outer = outer;
new_outer.inner_1 = function() {
alert('my new inner function');
};
如果我尝试像这样调用新重新定义的inner_1
:
new_outer.inner_1();
它按预期工作('我的新内部功能'被警告)。
但是如果我尝试调用外部函数:
new_outer();
调用旧版inner_1
。
我想重新定义inner_1
和来电outer
。我怎样才能做到这一点?
答案 0 :(得分:0)
这似乎是一个非常糟糕的主意,所以我不打算发布任何代码。但是,如果您正在寻求“仅限教育目的”的答案,我将暗示尽管您不能轻易地从其范围之外重新定义函数(根据您的示例),但没有什么能阻止您重新定义附加到功能对象。
但我确实认为,无论您要解决的问题是什么,都有更好的解决方案。