| 142 | // Fast apply |
| 143 | // http://jsperf.lnkit.com/fast-apply/5 |
| 144 | function invoke(fn, args, that){ |
| 145 | var un = that === undefined; |
| 146 | switch(args.length | 0){ |
| 147 | case 0: return un ? fn() |
| 148 | : fn.call(that); |
| 149 | case 1: return un ? fn(args[0]) |
| 150 | : fn.call(that, args[0]); |
| 151 | case 2: return un ? fn(args[0], args[1]) |
| 152 | : fn.call(that, args[0], args[1]); |
| 153 | case 3: return un ? fn(args[0], args[1], args[2]) |
| 154 | : fn.call(that, args[0], args[1], args[2]); |
| 155 | case 4: return un ? fn(args[0], args[1], args[2], args[3]) |
| 156 | : fn.call(that, args[0], args[1], args[2], args[3]); |
| 157 | case 5: return un ? fn(args[0], args[1], args[2], args[3], args[4]) |
| 158 | : fn.call(that, args[0], args[1], args[2], args[3], args[4]); |
| 159 | } return fn.apply(that, args); |
| 160 | } |
| 161 | |
| 162 | // Object: |
| 163 | var create = Object.create |