mirror of
https://github.com/musix-org/musix-oss
synced 2024-12-23 22:33:17 +00:00
25 lines
599 B
JavaScript
25 lines
599 B
JavaScript
|
var aFunction = require('../internals/a-function');
|
||
|
|
||
|
// optional / simple context binding
|
||
|
module.exports = function (fn, that, length) {
|
||
|
aFunction(fn);
|
||
|
if (that === undefined) return fn;
|
||
|
switch (length) {
|
||
|
case 0: return function () {
|
||
|
return fn.call(that);
|
||
|
};
|
||
|
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);
|
||
|
};
|
||
|
};
|