code: function(thisObject){
        var fn = this;
        var params = arrayFrom(arguments, 1);
  
        return params.length
          ? function(){
              return fn.apply(thisObject, params.concat.apply(params, arguments));
            }
          : function(){
              return fn.apply(thisObject, arguments);
            };
      }
docs: Changes function default context. It also makes possible to set static
  arguments (folding) for function.
  Implemented in ES5.
  @param {Object} thisObject
  @param {...*} args
  @return {function()}
  TODO: check compliance