Javascript 如何在类JS中生成数组变量

Javascript 如何在类JS中生成数组变量,javascript,syntax-error,p5.js,Javascript,Syntax Error,P5.js,我是一名python和java程序员,现在正在学习java脚本。首先,我试图制作snake,但snake.js中出现了一个奇怪的错误 Index.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>p5.js vers 0.5.2, Edit index.html to Change This Title</tit

我是一名python和java程序员,现在正在学习java脚本。首先,我试图制作snake,但snake.js中出现了一个奇怪的错误

Index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>p5.js vers 0.5.2, Edit index.html to Change This Title</title>
    <script src="http://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.2/p5.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.2/addons/p5.dom.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.2/addons/p5.sound.js"></script>
  </head>
  <body>
        <script src="Apple.js"></script>
        <script src="Snake.js"></script>
        <script src="index.js" type="text/javascript"></script>
  </body>
</html>
Index.js

// Currently empty

class Apple{
    constuctor(){
        
    }
}
let snake;

function setup(){
    createCanvas(1000, 1000);
    background(0, 0, 0);

    snake = new Snake();
}

function draw(){
    background(0, 0, 0);
    snake.update();
    snake.show();
}

function keyPressed(){
    snake.move(key);
}
class Snake {
    constuctor(){
        this.position = p5.Vector(500, 500);
        this.direction = "Up";
        this.body = [[500, 500]];
        this.bodySize = 1;
    }

    update(){
        switch(this.direction){
            case "Up":
                this.position.add(0, -40);
                break;
            case "Down":
                this.position.add(0, 40);
                break;
            case "Left":
                this.position.add(-40, 0);
                break;
            case "Right":
                this.position.add(40, 0);
        }
        this.body.push([this.position.x, this.position.y]);
    }

    show(){
        // Havn't coded this yet.
    }

}
Snake.js

// Currently empty

class Apple{
    constuctor(){
        
    }
}
let snake;

function setup(){
    createCanvas(1000, 1000);
    background(0, 0, 0);

    snake = new Snake();
}

function draw(){
    background(0, 0, 0);
    snake.update();
    snake.show();
}

function keyPressed(){
    snake.move(key);
}
class Snake {
    constuctor(){
        this.position = p5.Vector(500, 500);
        this.direction = "Up";
        this.body = [[500, 500]];
        this.bodySize = 1;
    }

    update(){
        switch(this.direction){
            case "Up":
                this.position.add(0, -40);
                break;
            case "Down":
                this.position.add(0, 40);
                break;
            case "Left":
                this.position.add(-40, 0);
                break;
            case "Right":
                this.position.add(40, 0);
        }
        this.body.push([this.position.x, this.position.y]);
    }

    show(){
        // Havn't coded this yet.
    }

}
错误是:UncaughtTypeError:无法读取未定义(Snake.js 23)的属性“push”

我在互联网上到处找,找不到解决办法

我不明白它为什么这么做,因为Snake.body不是未定义的我说了这个。body=[[500500]]


请帮助我了解该做什么

构造函数
->
构造函数
(缺少
r

并且错误消息
uncaughttypeerror:cannotreadproperty'push'of undefined
不再显示

[编辑]

你也忘了新的(
this.position=p5.Vector(500500);
->
this.position=new p5.Vector(500500);

您可以在此处进行测试:


尝试使用
Snake
构造函数中的
update
方法吗
this.update=this.update.bind(this)
首先您是否尝试在
this.body.push…
行之前插入
console.log(this.body)
在控制台中键入snake.body:它记录未定义