13/01/2010 Development / java script

A ídeia é ter um método com o mesmo nome, porém, executando funções distintas, através do recebimento de seus parâmetros!!!

// addMethod - By John Resig (MIT Licensed)
function addMethod(object, name, fn){
     var old = object[ name ];
     if ( old )
         object[ name ] = function(){
             if ( fn.length == arguments.length )
                 return fn.apply( this, arguments );
             else if ( typeof old == 'function' )
                 return old.apply( this, arguments );
         };
     else
         object[ name ] = fn;
}

// A configuração dos métodos

function Users(){

  addMethod(this, "find", function(){
   alert('Todos os usuários');
  });

  addMethod(this, "find", function(name){
    alert('O nome é ' + name);
  });

  addMethod(this, "find", function(first, last){
    alert('O nome é ' + first + ' sobrenome ' + last);

  });
}

// Aplicando os métodos

var users = new Users();
users.find();                          // Pesquisa todos usuários
users.find("John");                  // Pesquisa pelo Nome
users.find("John", "Resig");       // Pesquisa pelo Nome e Sobrenome
users.find("John", "E", "Resig"); // Não retorna nada