Dev (Back & Front)ARTIGO

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(){<br />	var x = document.forms[0].elements[0].value;<br />	var y = document.forms[0].elements[1].value;<br />	var z = document.forms[0].elements[2].options[document.forms[0].elements[2].selectedIndex].text;<br />}

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

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

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;<br />var r = 10;<br />with (Math) {<br />   a = PI * r * r;<br />   x = r * cos(PI);<br />   y = r * sin(PI/2);<br />}

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.

é formado em Desenvolvimento de Sistemas para Internet pela Faculdade Véris IBTA, Zend PHP 5 Certified Engineer, blogueiro e colunista iMasters, WebInsider e IBM DeveloperWorks.

Ver perfil