KaKarotto Small Talk

Registrado: 29/07/08 Mensagens: 16
|
Enviada: Sex 20/Nov/2009 19:20 Assunto: Opinião sobre formas de se implementar sobrecarga em js |
|
|
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 ??? |
|