자바스크립트 닌자비급 책에 나오는 예제...
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'); }); 과 같은 효과..