Ir para conteúdo
Fórum Script Brasil
  • 0

OO em JavaScript


expressForce

Pergunta

Bem, galera, eu to desenvolvendo um código que contém a seguinte classe:

function Tabuleiro(){
    
    var malha_aux = new Array(2);
    malha_aux[0] = new Array(20);
    malha_aux[1] = new Array(20);
    
    this.malha = malha_aux;
    this.getMalha = getMalha;
    this.setMalha = setMalha;
    this.getPos = getPos;
    this.setPos = setPos;
    this.initTabuleiro = initTabuleiro;
    
    function getMalha(){
        return malha;
    }
    
    function setMalha(malha){
        this.malha = malha;
    }
    
    function getPos(indx_X, indx_Y){
        return this.malha[indx_X][indx_Y];
    }
    
    function setPos(indx_X, indx_Y, content){
        this.malha[indx_X][indx_Y] = content;
    }
    
    function initTabuleiro(){
        for(var i=0; i<20; i++){
            for(var j = 0; j<20; j++){
                this.malha[i][j] = 0;
            }
        }
    }
}

Mas quando instancio um objeto dessa classe e chamo o método initTabuleiro(), o console de erros do Firefox diz que "this.malha is undefined".

Já to desesperado aki.. O q foi q eu fiz de errado? Ajuda ae galera. Sô iniciante no javascript e preciso aprender mais.

Flws!

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

i aew expressForce, bom o seu problema está na lógica, vamos por partes:

var malha_aux = new Array(2);
malha_aux[0] = new Array(20);
malha_aux[1] = new Array(20);
this.malha = malha_aux;
aqui você seta o atributo malha_aux como um array com 2 elementos o indice 0 e 1 vai conter um array com 20 posições, e atribui malha_aux a this.malha. na sua função init você tem isso:
for(var i=0; i<20; i++){
                for(var j = 0; j<20; j++){
                this.malha[i][j] = 0;
                }
            }

você faz um for enquanto a variavel i for menor que 20, logo abaixo você tenta atrinuir 0 a this.malha, quando o i for = 2, ele já irá lançar o erro, pois em cima você declaraou

malha _aux contendo apenas 2 posições, é isso aew, espero que ajude, abraço!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...