Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 调用两个同名函数_Javascript_Jquery - Fatal编程技术网

Javascript 调用两个同名函数

Javascript 调用两个同名函数,javascript,jquery,Javascript,Jquery,简而言之,我想用一个新函数覆盖一个javascript函数,但在这个新函数中,我希望能够调用旧函数。例如: function test() { alert('original'); } // then some time later function test() { alert('new function'); } // call function test(); 在这种情况下,只调用最后一个test()。因此,新功能发出警报 但是有没有一种方法可以调用第一个test()

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

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

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

// call function
test();
在这种情况下,只调用最后一个
test()
。因此,
新功能
发出警报

但是有没有一种方法可以调用第一个
test()
方法呢?那么这两个
test()
函数都被调用了吗


我之所以需要它,是因为web应用程序生成了一个
onSave()
方法。通过Ajax保存表单时会触发此函数

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


我该怎么做呢?

为什么不创建一个新的
函数
并放入
函数test()
中,这样当调用
函数test()
时,也会调用
新函数

e、 g


为什么不创建一个新的
函数
并将其放入
函数test()
中,这样当调用
函数test()
时,也会调用
新函数

e、 g


使用下面的函数,而不是使用相同的名称函数

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

您不能创建两个同名函数,请在下面使用,而不是创建同名函数

$(document).ajaxComplete(function() {
     // do your work
});
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();
不能创建两个同名函数

函数测试()
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();
{ console.log('original'); } var测试=功能(oldFn){ // /\ // ------- // \/ 返回函数(){/
函数测试()
{
console.log('original');
}
var测试=功能(oldFn){
// /\
//  -------
//        \/


返回函数()
的jquery。但不确定。将需要在两个版本之间共享的任何代码移动到新函数中,并从新旧版本中调用它。以后在理解代码时,您将避免头疼。@U Green先生,您的意思是延迟吗?@Eaterofs是的,我也这么认为。@w00:您想用这种方式实现什么?可能有更好的解决方案…似乎您正在寻找
.done()
的jquery。但不确定。将需要在两个版本之间共享的任何代码移动到新函数中,并从新旧版本中调用它。以后在理解代码时,您将避免头疼。@U Green先生,您的意思是延迟吗?@Eaterofs是的,我也这么认为。@w00:您想用这种方式实现什么?可能有更好的解决方案……谢谢,这似乎正是我想要的。但我不太理解代码。为什么新的
测试
函数需要
返回
?@w00注释。虽然我不确定是否足够,如果不够,请告诉我。;)谢谢,我知道现在发生了什么!:)你怎么通过带有test的参数?您只需要使用返回函数接受它。例如,
返回函数(aParam){
谢谢这似乎正是我想要的。但我不太明白代码。为什么新的
测试
函数需要
返回
?添加了@w00注释。虽然我不确定这是否足够,如果不够,请让我知道。;)谢谢,我知道现在发生了什么!:)你如何通过测试的参数?你只是需要使用返回函数接受它。例如,
返回函数(aParam){