code: function(that){
      var self = this,
        args = arguments.length > 1 ? Array.slice(arguments, 1) : null,
        F = function(){};
  
      var bound = function(){
        var context = that, length = arguments.length;
        if (this instanceof bound){
          F.prototype = self.prototype;
          context = new F;
        }
        var result = (!args && !length)
          ? self.call(context)
          : self.apply(context, args && length ? args.concat(Array.slice(arguments)) : args || arguments);
        return context == that ? result : context;
      };
      return bound;
    }
docs: /*<!ES5-bind>