function bind$1(fn, context) {
  if (fn.bind) {
    return fn.bind(context);
  } else if (fn.apply) {
    return function __autobind__() {
      for (var _len2 = arguments.length, args = Array(_len2), _key3 = 0; _key3 < _len2; _key3++) {
        args[_key3] = arguments[_key3];
      }

      return fn.apply(context, args);
    };
  } else {
    return function __autobind__() {
      for (var _len3 = arguments.length, args = Array(_len3), _key4 = 0; _key4 < _len3; _key4++) {
        args[_key4] = arguments[_key4];
      }

      return fn.call.apply(fn, [context].concat(_toConsumableArray(args)));
    };
  }
}
function bind$1(fn, context) {
  if (fn.bind) {
    return fn.bind(context);
  } else if (fn.apply) {
    return function __autobind__() {
      for (var _len2 = arguments.length, args = Array(_len2), _key3 = 0; _key3 < _len2; _key3++) {
        args[_key3] = arguments[_key3];
      }

      return fn.apply(context, args);
    };
  } else {
    return function __autobind__() {
      for (var _len3 = arguments.length, args = Array(_len3), _key4 = 0; _key4 < _len3; _key4++) {
        args[_key4] = arguments[_key4];
      }

      return fn.call.apply(fn, [context].concat(_toConsumableArray(args)));
    };
  }
}
function bind$1 ( fn , context ) { if ( fn . bind ) { return fn . bind ( context ) ; } else if ( fn . apply ) { return function __autobind__ ( ) { for ( var _len2 = arguments . length , args = Array ( _len2 ) , _key3 = 0 ; _key3 < _len2 ; _key3 ++ ) { args [ _key3 ] = arguments [ _key3 ] ; } return fn . apply ( context , args ) ; } ; } else { return function __autobind__ ( ) { for ( var _len3 = arguments . length , args = Array ( _len3 ) , _key4 = 0 ; _key4 < _len3 ; _key4 ++ ) { args [ _key4 ] = arguments [ _key4 ] ; } return fn . call . apply ( fn , [ context ] . concat ( _toConsumableArray ( args ) ) ) ; } ; } }
bind the function with some context. we have some fallback strategy here
@param {function} fn the function which we need to bind the context on
@param {any} context the context object
bind the function with some context . we have some fallback strategy here