1

我有一个看起来像这样的函数:

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。我怎样才能做到这一点?

4

1 回答 1

0

这似乎是一个非常糟糕的主意,所以我不会发布任何代码。但是,如果您寻求“仅用于教育目的”的答案,我只是暗示,尽管您无法轻松地从其范围之外重新定义函数(根据您的示例),但没有什么能阻止您重新定义附加到函数对象。

但是,我确实认为,无论您要解决的问题是什么,都有更好的解决方案。

于 2013-03-04T22:25:26.393 回答