0

要するに、JavaScript関数を新しい関数で上書きしたいのですが、その新しい関数で古い関数を呼び出せるようにしたいのです。たとえば、次のようになります。

function test()
{
    alert('original');
}

// then some time later
function test()
{
    alert('new function');
}

// call function
test();

この場合、最後だけtest()が呼び出されます。そのため、new functionアラートが表示されます。

test()しかし、最初のメソッドも呼び出す方法はありますか? SO両方のtest()機能が呼び出されますか?


これが必要な理由は、Web アプリケーションがonSave()メソッドを生成するためです。この関数は、フォームが Ajax を介して保存されるときにトリガーされます。

フォームが保存されたときに追加のことをしたいのですが、元のonSave()機能を変更することはできません。そのため、それを拡張する方法を探しています。

これどうやってするの?

4

3 に答える 3

3
function test()
{
    console.log('original');
}


var test = function (oldFn) {
  // /\
  //  -------
  //        \/
  return function () { // <- return a new function which will get stored in `test`
    oldFn();                     // use the passed `oldFn`
    console.log('new function'); // the new code
  };
}(test); // <- pass in the old function, we do this, to avoid reference problems

// call function
test();
于 2013-05-17T08:05:45.030 に答える
0

が呼び出されたときにも呼び出されるように、新しい を作成して のfunction中に入れてみませんか。function test()function test()new function

例えば

function test(){
 //code
 your_new_function();
}

function your_new_function(){
 //code
}
于 2013-05-17T07:49:51.707 に答える
0

同じ名前の関数を作成する代わりに以下を使用してください

$(document).ajaxComplete(function() {
     // do your work
});

同じ名前の 2 つの関数を作成することはできません

于 2013-05-17T07:54:48.550 に答える