Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou aprendendo orientação de objetos e por não ser nada convencional como no Java, estou tendo uns problemas aqui. Não estou sabendo lidar com eventos do tipo 'onclick', 'onkeypress', etc. Não sei se devo declarar os eventos dos meus objetos criados dentro do construtor do objeto; algo semelhante a isso:
function myObj(){
var attr = document.getElementById("button");
this.teste = function(){
alert("teste");
}
attr.onclick = teste;
}
,ou devo declará-los externamente, assim:
function myObj(){
this.attr = document.getElementById("button");
this.teste = function(){
alert("teste");
}
}
var obj = new myObj();
obj.attr.onclick = obj.teste;
Talvez até o melhor seja simular Singleton ou usar a propriedade prototype do objeto (não sei se é possível)... enfim me seria muito se alguém pudesse me explicar como proceder com eventos em objetos. Seria-me muito útil na construção de objetos em galerias complexas ou slideshows com efeitos de mouse e teclado
Muito boa a explicação!
Particularmente, prefiro usar o segundo método postado. Vejo nele mais organização e, como bem disse o João, você pode adicionar visibilidade aos membros.
:clap:
Obrigado João Batista Neto pela elucidação acerca do meu problema. Seu texto claro e objetivo me foi e ainda está sendo de grande valia. Também prefiro o segundo método, já que, a meu ver, apresenta uma estrutura mais organizada e de fácil compreensão.
>
Obrigado João Batista Neto pela elucidação acerca do meu problema. Seu texto claro e objetivo me foi e ainda está sendo de grande valia. Também prefiro o segundo método, já que, a meu ver, apresenta uma estrutura mais organizada e de fácil compreensão.
;)
>
Não sei se devo declarar os eventos dos meus objetos criados dentro do construtor do objeto, ou devo declará-los externamente
Bom, sobre sua pergunta original, escrevi esse texto aqui já faz um tempo: http://thegodclass.tumblr.com/post/9704477531/encapsulacao
Leia-o cuidadosamente e, talvez, você compreenda o motivo de não se declarar o evento fora da classe, acessando diretamente um membro dentro dela.
;)
A primeira coisa que você precisa compreender é que orientação a objetos e orientação a eventos são coisas distintas. Depois disso, você precisa compreender que a interface de usuário (View) e a camada responsável pela manipulação das ações do usuários também são distintas.
<!DOCTYPE html>
Supondo que sua View seja como listada acima, você pode escrever seu controlador de várias formas diferentes:
Método 1:
Método 2:
Talvez a grande vantagem do segundo método é a possibilidade de se adicionar visibilidade aos membros da classe, mas é tudo uma questão de estilo e você pode utilizar a forma que preferir.
Uma boa leitura: Google JavaScript Style Guide