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.
Deve-se tomar cuidado apenas com a performance do with()
Usá-lo faz a implementação ser mais lenta do que se você acessar objeto.atributo direto
Abs!
LikeLike