whole_func_string: function(obj, fn) {
        var keys = object.keys(obj);
        keys.forEach(function(key) {
          fn.call(obj, key, obj[key]);
        });
        return keys;
      }
func_code_string: function(obj, fn) {
        var keys = object.keys(obj);
        keys.forEach(function(key) {
          fn.call(obj, key, obj[key]);
        });
        return keys;
      }
func_documentation_string: *
  @method keys(<obj>, [fn])
  @returns Array
  @short Returns an array containing the keys in <obj>. Optionally calls [fn] for each key.
  @extra This method is provided for browsers that don't support it natively, and additionally is enhanced to accept the callback [fn]. Returned keys are in no particular order. %keys% is available as an instance method on extended objects.
  @example
  
  Object.keys({ broken: 'wear' }) -> ['broken']
  Object.keys({ broken: 'wear' }, function(key, value) {
  // Called once for each key.
  });
  Object.extended({ broken: 'wear' }).keys() -> ['broken']
  
  *