Este é um modelo que eu venho utilizando bastante em minhas estruturas e chamadas de classes.
Eu deixo de capturar os parametros nos argumentos e capturo atraves do invoke da classe via call; Ex: Ao inves deu fazer:
function Animal(nome, idade){
alert(nome + ' - ' + idade);
}
ou
function Animal(){
alert(arguments[0] + ' - ' + arguments[1])
}
eu faço
function Animal(){
alert(this.nome + " - " + this.idade)
}
Mas huggler, voce está louco? nome e idade nesse caso estão vazios!!! Sim, até o momento da chamada.
Animal.call({"nome" : "Huggler", "idade" : "77"});
Espero que sirva!