2013-05-17 4 views
0

요컨대, 새 함수로 자바 스크립트 함수를 덮어 쓰고 싶지만 그 새로운 함수에서는 이전 함수를 호출 할 수 있기를 원합니다. 예를 들면 다음과 같습니다.같은 이름을 가진 두 함수를 호출하십시오.

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

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

// call function 
test(); 

이 경우에는 마지막으로 test() 만 호출됩니다. 따라서 new function에 경고가 표시됩니다.

그러나 처음으로 test() 메서드를 호출하는 방법이 있습니까? 그래서 모두 test() 함수가 호출 되나요?


이유는 웹 응용 프로그램이 onSave() 메서드를 생성하기 때문에 필요합니다. 이 함수는 Ajax를 통해 양식을 저장할 때 트리거됩니다.

양식을 저장할 때 몇 가지 추가 작업을 원하지만 원래의 onSave() 기능을 변경할 수는 없습니다. 그래서 나는 그것을 확장 할 방법을 찾고있다.

어떻게하면됩니까?

+0

의 두 가지 기능을 것 같은데 만들 수 없습니다 jquery. 확실하지. –

+3

새 함수에서 두 버전간에 공유해야하는 코드를 이동하고 이전 버전과 새 버전에서 모두 호출해야합니다. 나중에 코드를 이해하려고 할 때 두통을 피할 수 있습니다. –

+0

@Mr_Green 지연을 의미합니까? http://api.jquery.com/category/deferred-object/ – EaterOfCode

답변

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

고마워요. 정확히 내가 원하는 것을하고있는 것 같습니다. 하지만 코드를 이해하지 못합니다. 새로운'test' 함수에서'return'이 필요한 이유는 무엇입니까? – w00

+0

@ w00 곧 일부 코드 주석을 추가하겠습니다. – Yoshi

+0

@ w00 개의 덧글이 추가되었습니다. 비록 그것이 충분한 지 모르겠지만, 그렇지 않다면 알려주십시오. ;) – Yoshi

0

당신은 .. function 새와 function test() 다음 호출 될 때 그래서 new function이 너무라고하는 function test() 안에 넣어

예를 생성하지 않는 이유 대신에 같은 이름의 기능

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

을 만드는 아래

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

function your_new_function(){ 
//code 
} 
0

를 사용하여 당신은 당신의`) (되는 .done`을 찾고있는 같은 이름

관련 문제