gpt4 book ai didi

javascript - JS 扩展构造函数类

转载 作者:行者123 更新时间:2023-11-30 00:04:25 27 4
gpt4 key购买 nike

我正在学习 JS,我创建了一个 Entity 类:

class Entity {

constructor(x=0, y=0, dx=0, dy=0, width=50, height=50, solid=false,
color="black", name="entity", id=Math.random()) {

this.x = x;
this.y = y;
this.dx = dx;
this.dy = dy;
this.width = width;
this.height = height;
this.solid = solid;
this.color = color;
this.name = name;
this.id = id;

entityList[id] = this;
}

UpdatePosition() {

this.x += this.dx;
this.y += this.dy;
}

Draw() {

ctx.save();
ctx.fillStyle = this.color;
ctx.fillRect(this.x, this.y, this.width, this.height);
ctx.restore();
}

BorderCollision() {

if (this.solid == true) {

if (this.x <= 0) {
this.dx = -this.dx;
}
if (this.x + this.width >= canvas.width) {
this.dx = -this.dx;
}

if (this.y <= 0) {
this.dy = -this.dy;
}

if (this.y + this.height >= canvas.height) {
this.dy = -this.dy;
}
}
}

EntityUpdate() {

this.UpdatePosition();
this.Draw();
this.BorderCollision();
}
}

现在,我想在一个名为 Player 的新类中扩展这个类,它有一个新成员:canMove

但是我不知道如何做一个新的构造函数,因为当我写 constructor(canMove) {this.canMove = canMove; +} 我得到一个错误 :(

谢谢 ;) !

最佳答案

如果你正在扩展一个类并定义一个构造函数,你需要调用super()如果你想使用this:

class Player extends Entity {
constructor(canMove) {
// super.constructor(); - NO
super(); // Yes
this.canMove = canMove;
}
}

您可能还想将一些参数传递给 super,并且由于您几乎不想复制整个参数列表,因此您可能需要使用 options object。而不是 10 个单独的参数。

关于javascript - JS 扩展构造函数类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39073400/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com