| // fast apply, http://jsperf.lnkit.com/fast-apply/5 |
| module.exports = function(fn, args, that){ |
| var un = that === undefined; |
| switch(args.length){ |
| case 0: return un ? fn() |
| : fn.call(that); |
| case 1: return un ? fn(args[0]) |
| : fn.call(that, args[0]); |
| case 2: return un ? fn(args[0], args[1]) |
| : fn.call(that, args[0], args[1]); |
| case 3: return un ? fn(args[0], args[1], args[2]) |
| : fn.call(that, args[0], args[1], args[2]); |
| case 4: return un ? fn(args[0], args[1], args[2], args[3]) |
| : fn.call(that, args[0], args[1], args[2], args[3]); |
| } return fn.apply(that, args); |
| }; |