code: function forIn(object, callback, thisArg) {
        callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3);
        return baseFor(object, callback, keysIn);
      }
docs: Iterates over own and inherited enumerable properties of an object executing
  the callback for each property. The callback is bound to `thisArg` and invoked
  with three arguments; (value, key, object). Callbacks may exit iteration
  early by explicitly returning `false`.
  
  @static
  @memberOf _
  @category Objects
  @param {Object} object The object to iterate over.
  @param {Function} [callback=identity] The function called per iteration.
  @param {*} [thisArg] The `this` binding of `callback`.
  @returns {Object} Returns `object`.
  @example
  
  function Shape() {
  this.x = 0;
  this.y = 0;
  }
  
  Shape.prototype.z = 0;
  
  _.forIn(new Shape, function(value, key) {
  console.log(key);
  });
  // => logs 'x', 'y', and 'z' (property order is not guaranteed across environments)