javaScript 프로그램을 만들다 보면 이벤트 콜백 함수에 다른 함수를 넣어야 하는 경우도 생기게 된다.


여러개의 Object에 다른 parameter를 넘기는 Callback Function을 넣었는데, 제일 마지막에 넣은 Callback Function만 호출되는 경우가 생기기도 한다.


그 때 사용할 수 있는 방법을 저장하기로 한다.




var fncMap={};    // 동적 함수가 저장될 곳.

function init(){    
    makeCallBackFnc('1', 'p');   // 함수를 만든다. 
    makeCallBackFnc('2', 'pp');    // 위에서 만든 함수와는 다른 함수가 생성
    fncMap['1']();    // 1번째 함수 호출
    fncMap['2']();    // 2번째 함수 호출
}


// fncMap에 key, function 으로 동적으로 함수가 저장된다.
function makeCallBackFnc(name, param){
    return fncMap[name]=function(){
         alert('name = '+name+', param = '+param);
    }    
}

init();


fncMap에 전역적으로 콜백 함수들을 관리할 수 있고 해당 name으로 검색해서 호출할 수 있기 때문에 위에서 말한 마지막 Callback Function만 호출되는 불상사를 해결 할 수 있다.




+ Recent posts