UNPKG

has-working-bind-x

Version:

Indicates if the engine has a working bind function.

60 lines (50 loc) 1.33 kB
import noop from 'noop-x'; var bind = noop.bind; var test1 = function test1() { var a1 = null; var a2 = null; var context = null; var testThis = []; var test1Fn = function test1Fn(arg1, arg2) { /* eslint-disable-next-line babel/no-invalid-this */ context = this; a1 = arg1; a2 = arg2; /* eslint-disable-next-line prefer-rest-params */ return arguments; }; try { var boundFn = bind.apply(test1Fn, [testThis, 1]); var args = boundFn(2); return boundFn.length === 1 && args.length === 2 && a1 === 1 && a2 === 2 && context === testThis; } catch (e) { return false; } }; var test2 = function test2() { var a1 = null; var a2 = null; var context = null; var oracle = [1, 2, 3]; var Ctr = function Ctr(arg1, arg2) { a1 = arg1; a2 = arg2; context = this; return oracle; }; try { var BoundFn = bind.apply(Ctr, [null]); var returned = new BoundFn(1, 2); return BoundFn.length === Ctr.length && returned === oracle && a1 === 1 && a2 === 2 && context !== oracle; } catch (e) { return false; } }; /** * Indicates if the engine has a working bind function. * * @type {boolean} */ var isWorking = typeof bind === 'function' && test1() && test2(); export default isWorking; //# sourceMappingURL=has-working-bind-x.esm.js.map