Legibilidade com with() statement no javascript

Hora de falar de Javascript. Hoje vou falar sobre um recurso que o Javascript oferece para diminuir as referências aos objetos. Utilizando o with() você consegue deixar o seu código mais legível e prático.

Veja um exemplo:

Uma implementação comum, sem o with()

function foo(){
        var x = document.forms[0].elements[0].value;
        var y = document.forms[0].elements[1].value;
        var z = document.forms[0].elements[2].options[document.forms[0].elements[2].selectedIndex].text;
}

A mesma implementação, COM o with()

function foo(){
        with(document.forms[0]){
                var x = elements[0].value;
                var y = elements[1].value;
                with(elements[2]){
                        var z = options[selectedIndex].text
                }
        }
}

Viram como o código ficou menor e mais legível? Não não precisamos ficar repetindo instruções para se referenciar a um determinado objeto.

Gostaram? Ok, mais um exemplo então:

var a, x, y;
var r = 10;
with (Math) {
   a = PI * r * r;
   x = r * cos(PI);
   y = r * sin(PI/2);
}

Na forma tradicional teríamos que ficar nos referenciando ao objeto Math do javascript: Math.cos(PI) ou Math.sin(PI/2).

Atenção

O uso do with() pode ser nocivo. Como também o eval(), e também como o ajax pode ser nocivo e se pensar no mesmo raciocínio, muitos outros recursos disponíveis na linguagem podem ser nocivos se não forem aplicadas de forma correta. Caso for de interesse, leia mais em: http://yuiblog.com/blog/2006/04/11/with-statement-considered-harmful/

É isso aí, um abraço a todos.

One thought on “Legibilidade com with() statement no javascript

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: