whole_func_string: function cloneObject( obj ) {
    if ( obj === null || typeof obj !== 'object' ) {
      return obj;
    }
    var temp = obj.constructor( ); // give temp the original obj's constructor
    for ( var key in obj ) {
      temp[ key ] = cloneObject( obj[ key ] );
    }
    return temp;
  }
func_code_string: function cloneObject( obj ) {
    if ( obj === null || typeof obj !== 'object' ) {
      return obj;
    }
    var temp = obj.constructor( ); // give temp the original obj's constructor
    for ( var key in obj ) {
      temp[ key ] = cloneObject( obj[ key ] );
    }
    return temp;
  }
func_documentation_string: recursive function to clone an object. If a non object parameter is passed in, that parameter is returned and no recursion occurs.