저작자 표시 비영리 변경 금지
신고
Posted by 용식


자바스크립트 닌자비급 책에 나오는 예제...
var delay = setTimeout.partial(undefined, 3000); 구문이 실행되면
fn에는 setTimeout이, args에는 [undefiend, 3000]이 할당된다.

이후 delay(function() { console.log('1111'); }); 구문이 실행되면..
args는 클로져로 저장된 이전의 [undefiend, 3000]가
arguments에는 이후 실행된 "function() { console.log('1111'); }"이 넘어온다.

for-if에 의해서 args의 undefined가 function으로 대체되면서
결국 fn.apply(this, args);는

setTimeout.apply(window, function() { console.log('1111'); }); 과 같은 효과..


저작자 표시 비영리 변경 금지
신고
Posted by 용식


addMethod에 의해서 old에 이전 참조가 유지되어..
호출 체인이 발생하는 것 같이 보인다.

3개의 서로 다른 파라메터 개수를 가진 함수를 addMethod로 추가한 후 

ninjas.find()를 호출해보면....


(2, 0) (1, 0) (0, 0)이 로그로 찍힌 후 함수가 실행되는데.....


ninjas.find() 실행시 fn은 제일 마지막에 추가된 파라메터 2개짜리 function이 arguments는 ninjas.find()에서의

파라메터가 넘어가고... 두 파라메터의 길이가 같지 않으므로 old.apply가 실행되는데 이 old는 

addMethod에서 두번째로 추가한 파라메터 하나짜리 .... 이런식으로 연속적인 콜이 발생하는듯..


대박...;; 


저작자 표시 비영리 변경 금지
신고
Posted by 용식
저작자 표시 비영리 변경 금지
신고
Posted by 용식

즉시실행 함수

JavaScript 2014.04.02 09:35

객체의 프로퍼티가 객체의 생명주기 안에서는 값이 변하지 않고,
처음 값을 정의하기 위해서 뭔가 계산이 필요하다고 하면.. 위와 같이 즉시실행 함수를 사용한다.
이 함수는 스크립트 로딩시에 실행되어 프로퍼티를 정의해놓게된다.


저작자 표시 비영리 변경 금지
신고
Posted by 용식

closure 예제

JavaScript 2014.04.02 09:26



이미 반환된 함수가 자신을 리턴했던 함수 내부의 변수를 계속 참조 할 수 있네..

저작자 표시 비영리 변경 금지
신고
Posted by 용식