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
。我怎样才能做到这一点?
在JavaScript中做到这一点的唯一方法(我绝对不建议编写这样的代码)将在外部函数上调用'.toString()',替换内部函数,然后转换回实际功能。一旦函数被实例化,它就不能被改变(并且注意上面描述的可怕过程不会改变函数,而是创建一个新函数)。 – Pointy 2013-03-04 18:50:31
不改变'outer'就不能完成。你能否收到一个参数,例如一个标志,告诉应该使用哪个'inner1',或者可能接收'inner1'作为参数? – 2013-03-04 18:50:57
@如果'outer'关闭了一些不可见的东西从而导致打印机不能工作 – 2013-03-04 18:51:29