重新定义作为另一个函数的一部分的函数

时间:2013-03-04 18:48:36

标签: javascript

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

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

1 个答案:

答案 0 :(得分:0)

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

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