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:
댓글 쓰기