1// optional / simple context binding 2var aFunction = require('./_a-function'); 3module.exports = function (fn, that, length) { 4 aFunction(fn); 5 if (that === undefined) return fn; 6 switch (length) { 7 case 1: return function (a) { 8 return fn.call(that, a); 9 }; 10 case 2: return function (a, b) { 11 return fn.call(that, a, b); 12 }; 13 case 3: return function (a, b, c) { 14 return fn.call(that, a, b, c); 15 }; 16 } 17 return function (/* ...args */) { 18 return fn.apply(that, arguments); 19 }; 20}; 21