function bindKey(object, key) {
      return arguments.length < 3
        ? createWrapper(key, BIND_FLAG | BIND_KEY_FLAG, null, object)
        : createWrapper(key, BIND_FLAG | BIND_KEY_FLAG | PARTIAL_FLAG, null, object, slice(arguments, 2));
    }
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 [Peter Michaux's article](http://michaux.ca/articles/lazy-function-definition-pattern)
for more details.

@static
@memberOf _
@category Functions
@param {Object} object The object the method belongs to.
@param {string} key The key of the method.
@param {...*} [args] 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!'