| | |
| | | var uncurryThis = require('../internals/function-uncurry-this'); |
| | | var aCallable = require('../internals/a-callable'); |
| | | var NATIVE_BIND = require('../internals/function-bind-native'); |
| | | |
| | | var bind = uncurryThis(uncurryThis.bind); |
| | | |
| | | // optional / simple context binding |
| | | module.exports = function (fn, that, length) { |
| | | module.exports = function (fn, that) { |
| | | aCallable(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 that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) { |
| | | return fn.apply(that, arguments); |
| | | }; |
| | | }; |