Skip Navigation Links



Translate this page now :



»Programação
»Programação.NET
»Banco de Dados
»Webdesign
»Office
» Certificações Microsoft 4
»Treinamentos4
»Programação 4
»Webdesign«
»Office & User Tips«
»Grupos de UsuĆ”rios
»CĆ©lulas AcadĆŖmicas«

Morcegando
Você já está cadastrado e participa do grupo de usuários de sua cidade ? Se não, comente o porque.
 
 
FaƧa um pequeno teste com 10 questƵes de VB
.:.
Teste seus conhecimentos em Visual Basic, SQL Server e ASP 3.0 com nossas provas on-line
.:.
Aprimore seus conhecimentos em programaĆ§Ć£o com nosso treinamento on-line de lĆ³gica de programaĆ§Ć£o
.:.
Veja nosso calendƔrio de treinamentos
Gostou da PƔgina?
Então

para um amigo!

Pesquisa personalizada
Pesquisar Dicas:

 






Utilizando classes em JavaScript

É muito comum utilizar-se o javascript através de copy/past de código, devido a isso muitos desconhecem o real poder desta linguagem.

Assim como o VBScript, o JavaScript também possui recursos de orientação a objetos, o que permite a construção e utilização de classes em javascript.

Uma classe em JavaScript nada mais é do que uma função. Só que podemos construir funções dentro de funções, gerando o efeito de uma classe.

Veja um exemplo de uma classe JavaScript simples :


function TestandoClasse() {

this.somar=calc2;
this.multiplicar=calc1;


function calc1(x)
{ alert(x*2) }

function calc2(x)
{ alert(x+2) }

}


É basicamente uma função chamada TestandoClasse, mas dentro desta função criamos 2 outras funções, calc1 e calc2.

Essas duas funções seriam a principio apenas funções internas da função TestandoClasse. Para que calc1 e calc2 possam ser chamadas externamente é necessário expor essas funções como métodos da classe. É ai que entram as duas instruções iniciais da classe :


this.somar=calc2;
this.multiplicar=calc1;

"this" representa a própria função (classe) em que estamos trabalhando. Com esta síntaxe estamos expondo como métodos desta classe somar e multiplicar. Observem que os métodos não precisam ter os mesmos nomes que as funções internas.

Veja um exemplo de uso desta classe :

 

<html>
<body onload="testar()">
<script languagem=javascript src="testandoclasse1.js"></script>

<script language=javascript>
function testar()
{

var obj=new TestandoClasse;
obj.somar(4);
obj.multiplicar(4);

}
</script>


A classe foi chamada através de uma tag script src e no onload fizemos uso da classe. Observe a forma como utilizamos new para criar uma nova instância da classe utilizando o nome da função (que passou a ser o nome da classe) e a partir dai utilizamos os métodos que essa classe nos disponibilizou.

Essa classe pode possuir atributos internos, como uma classe normal, veja :


function TestandoClasse() {

var valor=2

this.somar=calc2;
this.multiplicar=calc1;


function calc1(x)
{ alert(x*valor) }

function calc2(x)
{ alert(x+valor) }

}

Esse atributo interno da classe (valor) não é acessível externamente, apenas pode ser utilizado pelas próprias funções que compõem a classe.

Mas podemos também criar atributos que sejam acessados externamente, veja :


function TestandoClasse() {

this.valor=2
this.somar=calc2;
this.multiplicar=calc1;


function calc1(x)
{ alert(x*this.valor) }

function calc2(x)
{ alert(x+this.valor) }

}

Agora temos uma propriedade valor que podemos manipular durante a utilização da classe :

<html>
<body onload="testar()">
<script languagem=javascript src="testandoclasse1.js"></script>

<script language=javascript>
function testar()
{

var obj=new TestandoClasse;
obj.valor=3
obj.somar(4);
obj.multiplicar(4);


}
</script>

Ao invés de mantermos um atributo público, como é este o caso, podemos fazer também como em outras linguagens em que utilizamos rotinas (property set/get do VB, por exemplo) para controlar a atribuição e devolução de valores das variáveis. Em javascript isso é conseguido, como verão, com um pequeno truque (para não dizer gambiarra).

Veja como fica o código :

function TestandoClasse() {

var valr=2

this.valor=controlavalor;
this.somar=calc2;
this.multiplicar=calc1;


function controlavalor() {

if (controlavalor.arguments.length==0) {
// Se não houve argumentos então trata-se de get
return(valr)
}
else {
if (conrolavalor.arguments[0]>5) {
alert("O valor máximo aceito por essa classe é 5")
}
else
{ valr=controlavalor.arguments[0] }
}

}

function calc1(x)
{ alert(x*valr) }

function calc2(x)
{ alert(x+valr) }

}

Valr (agora sem o "O") fica sendo um atributo privado. No atributo público valor fazemos o vínculo de uma função, controlavalor. Nesta função podemos utilizar a propriedade arguments da propria função para verificar quando ela foi chamada para recuperar o valor (property get) ou quando foi chamada para atribuir o valor (property set).

Para demonstrarmos a utilização desse recurso adicionamos no método uma validação para não aceitar valores superiores a 5.

Infelizmente essa pequena gambiarra gera uma mudança na forma de uso de classa, veja :

<html>
<body onload="testar()">
<script languagem=javascript src="testandoclasse1.js"></script>

<script language=javascript>
function testar()
{

var obj=new TestandoClasse;
obj.valor(3);
obj.somar(4);
obj.multiplicar(4);
alert(obj.valor())
}
</script>

Não podemos mais usar valor como uma simples propriedade. Ele é um método que recebe ou não parâmetros, assim a chamada é com parentesis, não mais com sinal de = como seria o natural nesses casos.

Dennes Torres
MCSD,MCSE,MCDBA





Envie seus comentįrios sobre este artigo

Nome :

E-mail :

Comentários :


Avise-me quando houverem novos comentįrios nesta pįgina

Veja abaixo os comentários já enviados :

Nome : E-Mail :
ouiuiuiu
Nome : E-Mail :
teste
Nome : Jesus E-Mail : jesus_oliveira@yahoo.com.br
Ótimo, sucinto e muito bem explicado. Continue assim
Nome : jefe E-Mail : wpdwp@mdma.com
oascoasmcsacasc
Nome : E-Mail :
...
Nome : das E-Mail : das
dsadsadas
Nome : Pedro E-Mail : afsdjlkfjak@vlkjsglkak.com
dfasdfasdfasd
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Conheça mais sobre o nosso site :

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::



Quer saber mais?
Faça um curso na Búfalo Informática, Treinamento e Consultoria e
Prepare-se para o Mercado!
Veja o que a Búfalo tem para você.

ļæ½ BĆŗfalo InformĆ”tica, Treinamento e Consultoria - Rua Ɓlvaro Alvim, 37 Sala 920 - CinelĆ¢ndia - Rio de Janeiro / RJ
Tel.: (21)2262-1368 (21) 9240-5134 (21) 9240-7281 e-Mail:
contato@bufaloinfo.com.br