20 lines
506 B
JavaScript
20 lines
506 B
JavaScript
|
// optional / simple context binding
|
||
|
var aFunction = require('./$.a-function');
|
||
|
module.exports = function(fn, that, length){
|
||
|
aFunction(fn);
|
||
|
if(that === undefined)return fn;
|
||
|
switch(length){
|
||
|
case 1: return function(a){
|
||
|
return fn.call(that, a);
|
||
|
};
|
||
|
case 2: return function(a, b){
|
||
|
return fn.call(that, a, b);
|
||
|
};
|
||
|
case 3: return function(a, b, c){
|
||
|
return fn.call(that, a, b, c);
|
||
|
};
|
||
|
}
|
||
|
return function(/* ...args */){
|
||
|
return fn.apply(that, arguments);
|
||
|
};
|
||
|
};
|