调用两个具有相同名称的函数

时间:2013-05-17 07:45:03

标签: javascript jquery

简而言之,我想用更新的函数覆盖javascript函数,但是在那个较新的函数中我希望能够调用旧函数。例如:

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

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

// call function
test();

在这种情况下,只调用最后一个test()。所以new function会收到警报。

但是有没有办法调用第一个test()方法?那么test()函数都被调用了吗?


我需要这个的原因是因为Web应用程序生成onSave()方法。通过Ajax保存表单时会触发此函数。

我想在保存表单时做一些额外的事情,但我不能只改变原来的onSave()功能。这就是为什么我正在寻找扩展它的方法。

我该怎么做?

3 个答案:

答案 0 :(得分:2)

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();

答案 1 :(得分:0)

为什么不创建新function并放入function test(),以便在调用function test()时调用new function

e.g。

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

function your_new_function(){
 //code
}

答案 2 :(得分:0)

使用以下代替同名功能

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

您无法创建两个同名的功能