GUJS

O Maior Fórum Javascript do Brasil
Opinião sobre formas de se implementar sobrecarga em js
Novo tópico   Responder tópico    GUJS - O Maior Fórum Javascript do Brasil - Índice -> JSOO (Orientação a Objetos)
Exibir tópico anterior :: Exibir próximo tópico  
Autor Mensagem
KaKarotto
Small Talk


Registrado: 29/07/08
Mensagens: 16

MensagemEnviada: Sex 20/Nov/2009 19:20    Assunto: Opinião sobre formas de se implementar sobrecarga em js Responder com citação

Olá povo, sei que aqui nesse fórum tem bastante gente que manja de js e eu gostaria de uma opinião dos mais avançados na linguagem.

Ví duas formas que considero boas para a sobrecarga, uma vi no milfont.org que é essa:

Código:
var Objeto = new function(){
    return {
        metodo: function(){
            var argumentos = arguments.length;
            switch(argumentos){
                case 0 : alert('Function sem argumentos');
                         break;
                case 1 : alert(arguments[0]);
                         break;
                case 2 : alert(arguments[0] + ' - ' +
                          arguments[1]); break;
            }
        }
    }
}();


A outra vi no blog do resig, que é essa:

Código:
function addMethod(object, name, fn){
    var old = object[ name ];
    object[ name ] = function(){
        if ( fn.length == arguments.length )
            return fn.apply( this, arguments );
        else if ( typeof old == 'function' )
            return old.apply( this, arguments );
    };
}

function Users(){
  addMethod(this, "find", function(){
    // Find all users...
  });
  addMethod(this, "find", function(name){
    // Find a user by name
  });
  addMethod(this, "find", function(first, last){
    // Find a user by first and last name
  });
}



Sinceramente, embora eu ache as duas soluções extremamente plausíveis e práticas, não as considero muito elegantes. Outro dia pensei numa alternativa:


Código:

this.sobrecarga = function(){
   var arg = arguments
   ({
   
      "0": function(){
         this.nome("Eduardo Ottaviani")
      },
      "1": function(a1){
         this.nome(a1)
      },
      "2": function(a1, a2){
         this.nome(a1)
         this.idade(a2)
      }
      
   })[arg.length].apply(this, arg)

}


Vejo um problema só, o fato de se criar um objeto, armazenando uma área da memória que cresce a medida que vou colocando mais funções. Mas não sei se é perceptível em desempenho a criação e o tamanho desse objeto.

Alguma opinião ???
Voltar ao topo
Exibir o perfil do usuário Enviar mensagem privada
Mostrar os tópicos anteriores:   
Novo tópico   Responder tópico    GUJS - O Maior Fórum Javascript do Brasil - Índice -> JSOO (Orientação a Objetos) Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Você não pode enviar mensagens novas neste fórum
Você não pode responder mensagens neste fórum
Você não pode editar suas mensagens neste fórum
Você não pode excluir suas mensagens neste fórum
Você não pode votar em enquetes neste fórum


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por phpBB Brasil