본문 바로가기

JavaScript

[Javascript] 클로져와 루프 문제 더보기
[javascript] 클로져를 이용한 partial 예제 자바스크립트 닌자비급 책에 나오는 예제...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() { .. 더보기
[Javascript] method overload addMethod에 의해서 old에 이전 참조가 유지되어..호출 체인이 발생하는 것 같이 보인다. 3개의 서로 다른 파라메터 개수를 가진 함수를 addMethod로 추가한 후 ninjas.find()를 호출해보면.... (2, 0) (1, 0) (0, 0)이 로그로 찍힌 후 함수가 실행되는데..... ninjas.find() 실행시 fn은 제일 마지막에 추가된 파라메터 2개짜리 function이 arguments는 ninjas.find()에서의파라메터가 넘어가고... 두 파라메터의 길이가 같지 않으므로 old.apply가 실행되는데 이 old는 addMethod에서 두번째로 추가한 파라메터 하나짜리 .... 이런식으로 연속적인 콜이 발생하는듯.. 대박...;; 더보기
[Javascript] 함수 호출 더보기
즉시실행 함수 객체의 프로퍼티가 객체의 생명주기 안에서는 값이 변하지 않고,처음 값을 정의하기 위해서 뭔가 계산이 필요하다고 하면.. 위와 같이 즉시실행 함수를 사용한다.이 함수는 스크립트 로딩시에 실행되어 프로퍼티를 정의해놓게된다. 더보기
closure 예제 이미 반환된 함수가 자신을 리턴했던 함수 내부의 변수를 계속 참조 할 수 있네.. 더보기