Inspecionando propriedades com o watch
Vamos nessa que o tempo ruge e a sapucaí é grande!
Cada vez que leio um pouco mais sobre desenvolvimento, mas eu vejo que tenho que estudar, isso de certa forma é bom, pois nunca haverá alguém bom o suficiente que não tenha o que aprender é aquela velha frase "Estudar (Ler) é um universo em desencanto", agora que viajamos um pouco voltaremos ao tema. Essa função watch, é muito interessante e não vejo muita gente comentando sobre ela por aí, então resolvi trazer esse assunto. Tomará que para você seja inédito o uso dela, pois fiquei super empolgando quando descobri a engine da coisa.
Watch
Definição: Executa uma função específica quando é atribuído um valor à propriedade observada.
Sintaxe: instObj.watch(propriedade, função);
Obs: a propriedade fica entre aspas dupla (").
No final das contas, ele funciona como um debugador.
Código:
Explicando o código acima:
linha 1 -> Crio um objeto, no qual a propriedade recebe o valor (funciona?)
linha 2 -> Mando o javascript inspecionar a propriedade (propriedade) do objeto (objeto) chamando a função handler.
linha 3 -> a função handler, como pode-se observar possui 3 parâmetros (id, velhoVal, novoVal), são parâmetros padrão e não é possível passar outros parâmetros à essa função (até onde eu sei, pelo menos), onde estes por sua vez são:
. id -> Identificação da propriedade que é inspecionada.
. velhoVal -> O valor antigo da propriedade.
. novoVal -> O valor novo da propriedade.
Obs: Manter a ordem dos parâmetros.
linha 4 -> Texto de exibição
linha 5 -> Essa linha é importante, é o valor que a propriedade irá conter, se você não der um retorno para essa função a propriedade vai ter o valor undefined. Com esse watch pode-se atribuir qualquer valor de retorno à essa propriedade. Chocante né?!
linha última -> Troco o valor da propriedade para o handler ser executado.
Todos os objetos, descendem essa função.
Mais uma coisa, se você não quiser mais "inspecionar" a propriedade usa a função unwatch.
Usando o mesmo exemplo.
Código:
Divirtam-se, pois achei isso o máximo
[UPDATE]
Na linha do retorno do novo valor, pus um document.write para exibir apenas o valor da variável, dessa forma é possível visualizar toda a operação
Como observado pelo Micox, o IEca não dá suporte à essa propriedade
[/UPDATE]
Fuiii...
Cada vez que leio um pouco mais sobre desenvolvimento, mas eu vejo que tenho que estudar, isso de certa forma é bom, pois nunca haverá alguém bom o suficiente que não tenha o que aprender é aquela velha frase "Estudar (Ler) é um universo em desencanto", agora que viajamos um pouco voltaremos ao tema. Essa função watch, é muito interessante e não vejo muita gente comentando sobre ela por aí, então resolvi trazer esse assunto. Tomará que para você seja inédito o uso dela, pois fiquei super empolgando quando descobri a engine da coisa.
Definição: Executa uma função específica quando é atribuído um valor à propriedade observada.
Sintaxe: instObj.watch(propriedade, função);
Obs: a propriedade fica entre aspas dupla (").
No final das contas, ele funciona como um debugador.
Código:
objeto = {propriedade:"funciona ?"}
objeto.watch("propriedade", handler);
function handler (id, velhoVal, novoVal) {
//Confirmo se o usuário quer receber o novo valor da propriedade, senão continua com o mesmo valor.
return (confirm("objeto."+id+" era"+velhoVal+" agora é "+novoVal+". Deseja receber o novo valor?"))?document.write(novoVal): document.write(velhoVal);
}
objeto.propriedade = "Claro que sim";
Explicando o código acima:
linha 1 -> Crio um objeto, no qual a propriedade recebe o valor (funciona?)
linha 2 -> Mando o javascript inspecionar a propriedade (propriedade) do objeto (objeto) chamando a função handler.
linha 3 -> a função handler, como pode-se observar possui 3 parâmetros (id, velhoVal, novoVal), são parâmetros padrão e não é possível passar outros parâmetros à essa função (até onde eu sei, pelo menos), onde estes por sua vez são:
. id -> Identificação da propriedade que é inspecionada.
. velhoVal -> O valor antigo da propriedade.
. novoVal -> O valor novo da propriedade.
Obs: Manter a ordem dos parâmetros.
linha 4 -> Texto de exibição
linha 5 -> Essa linha é importante, é o valor que a propriedade irá conter, se você não der um retorno para essa função a propriedade vai ter o valor undefined. Com esse watch pode-se atribuir qualquer valor de retorno à essa propriedade. Chocante né?!
linha última -> Troco o valor da propriedade para o handler ser executado.
Todos os objetos, descendem essa função.
Mais uma coisa, se você não quiser mais "inspecionar" a propriedade usa a função unwatch.
Usando o mesmo exemplo.
Código:
objeto.unwatch("propriedade");
Divirtam-se, pois achei isso o máximo
[UPDATE]
Na linha do retorno do novo valor, pus um document.write para exibir apenas o valor da variável, dessa forma é possível visualizar toda a operação
Como observado pelo Micox, o IEca não dá suporte à essa propriedade
[/UPDATE]
Fuiii...
Marcadores: JavaScript
3 Comentários:
OPa, bão demais. Eu também não conhecia.
Mas tem que ver se vale pra qualquer navegador. Na referencia do MDC diz que é só pro Firefox 1.2.
Testei no FF aqui e estranhamente apareceu a tela de impressão. O que será que eu fiz de errado??!?!
NO Ie falou a velha mensagem que o objeto não dá suporte.
Opa Micox,
Esqueci de mencionar que no IEca não funfa! :(
Seria pedir demais né?! Vamos ver se no IEca 8, já virá com suporte à isso.
Tela de impressão?! o.O
Pode me passar por e-mail o seu código para eu dar uma olhada?
Fuiii...
Bem interessante, não conhecia tb!
Postar um comentário
Assinar Postar comentários [Atom]
<< Página inicial