code: function bindKey(object, key) {
        return arguments.length > 2
          ? createWrapper(key, 19, slice(arguments, 2), null, object)
          : createWrapper(key, 3, null, null, object);
      }
docs: Creates a function that, when called, invokes the method at `object[key]`
  and prepends any additional `bindKey` arguments to those provided to the bound
  function. This method differs from `_.bind` by allowing bound functions to
  reference methods that will be redefined or don't yet exist.
  See http://michaux.ca/articles/lazy-function-definition-pattern.
  
  @static
  @memberOf _
  @category Functions
  @param {Object} object The object the method belongs to.
  @param {string} key The key of the method.
  @param {...*} [arg] Arguments to be partially applied.
  @returns {Function} Returns the new bound function.
  @example
  
  var object = {
  'name': 'fred',
  'greet': function(greeting) {
  return greeting + ' ' + this.name;
  }
  };
  
  var func = _.bindKey(object, 'greet', 'hi');
  func();
  // => 'hi fred'
  
  object.greet = function(greeting) {
  return greeting + 'ya ' + this.name + '!';
  };
  
  func();
  // => 'hiya fred!'