我有个问题 . 我正在学习JavaScript,我试图编写一个Snake(游戏),我编写了一个“类”Snake并制作了一个对象“V1 = new Snake(* Arguments *);”但是当我运行游戏时,我得到了这个错误:未捕获的ReferenceError:Av未定义 . 当我调用函数Delta时抛出 .

你能告诉我为什么会这样吗?

PS:对不起,如果我写错了 . 我的英语不太好 .

这是Snake.js

function Snake(a,b,Ar,Ab,De,Iz,Col,cxt) { 
this.x=a;
this.y=b;
this.MX= [this.x,this.x+5,this.x+10,this.x+15,this.x+20,this.x+25,this.x+30,this.x+35]; 
this.MY=[this.y,this.y,this.y,this.y,this.y,this.y,this.y,this.y];
this.DX=[0,-5,0,5];
this.DY=[5,0,-5,0];
this.Pos=0;
this.Av=3;
this.Arriba=Ar;
this.Abajo=Ab;
this.Derecha=De;
this.Izquierda=Iz; 
this.Color=Col;
this.ctx = cxt.getContext('2d'); 
this.GetX=function() { 
    return this.x;
}
this.GetY=function() { 
    return this.y;
}
this.Delta=function() { 
    this.Pos=this.Pos+1;
    this.x=this.MX[this.MX.length]=this.x+this.DX[Av];
    this.y=this.MY[this.MY.length]=this.y+this.DY[Av];
}
this.CambioDireccion=function(num) {
    var mov=-1; // mov empieza en -1;
    if(num==this.Arriba) mov=2; 
    if(num==this.Izquierda) mov=1;
    if(num==this.Abajo) mov=0;
    if(num==this.Derecha) mov=3;
    if(mov==-1) return; 
    if(mov%2  != this.Av%2) this.Av=mov; 
}
this.Alargar=function() {
    this.Pos=this.Pos-2;
}
this.FueradeRango=function() {
    if(this.x>=350 || this.y>=350 || this.x<=0 || this.y<=0) return true;
    return false;
}
this.Dibuja=function() { 
    this.ctx.strokeStyle=this.Color; 
    this.ctx.beginPath(); 
    for(var i=this.Pos; i<this.MX.length; i=i+1) {
        this.ctx.fillRect(this.MX[i]-2,this.MY[i]-2,5,5);
    }
}
this.ChocaConMisma=function() { 
    for(var i=this.Pos; i<this.MX.length-1; i=i+1) {
        if(this.MX[i]==this.x && this.MY[i]==this.y) return true;
    }
    return false;
} 
this.ChocaCon=function(Px,Py) { 
    for(var i=this.Pos; i<this.MX.length; i=i+1) {
        if(this.MX[i]==Px && this.MY[i]==Py) return true;
    }
    return false;
}
this.ChocaConSnake=function(Vib) { 
    for(var i=this.Pos; i<this.MX.length; i=i+1) {
        if(Vib.ChocaCon(this.MX[i],this.MY[i])) return true;
    }
    return false;
}

}