次のような関数があります。
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
と callを再定義したいouter
。どうすればこれを達成できますか?