2015년 3월 1일 일요일

커링 함수에 bind 사용하기

bind 는 기존의 함수나  메소드 에 영향을 주지않고 임시로 추가적인 함수를 만들어서 기존의 함수에 적용 을 시킨다.

function SimpleURL(protocol, domain, path){
return protocol + "://"+domain+"/"+path;
}

1.ㅂㅏ인드를 ㅅㅏ용하지  않는 일반적인 방법

var urls=paths.map(function(path){
return SimpleURL("http",sitedomain,path);
});

2.바인드를 사용 하여 심플 하게 변경

기 존의 함수에 bind(this, arg,arg) 식으로 선언하면,  arg 개수 를 가진 무명의 함수를 생성하여 이를 리 턴하고 다시 원래의 함수 를 호출(위임)하여   준다.

아래 예제에서는 simpleURL 에서는 this 등이 사용되지  않기 때문에 null  을 첫번째 인자로,

protocol과 domain 을 두번쨰 인자로 취하여 bind 가 새로운 함수를  생성한다음 함수리턴을 하고,

리턴된  함수 의 마지막에 path(map 에 의해 추출된 변수..여기서는  무명변수) 를  인자로 붙여 simpleurl 을 실행한다.

var urls=paths.map(SimpleURL.bind(null,"http",sitedomain));

0 comments:

댓글 쓰기