自定义对象/类型 Javascript

Custom Objects/types Javascript

本文关键字:Javascript 类型 对象 自定义      更新时间:2023-09-26

我正在使用canvs在JS中制作一个简单的2d游戏。

游戏由一个骑士组成,他跑来跑去杀死哥布林,哥布林一旦被触摸,就会重置到仰戈姆的位置。我想为每一个被杀的哥布林留下血迹。

目前,在我重新绘制画布之前,我使用之前的 X 和 Y 坐标来绘制哥布林死亡的地方的血液飞溅图像。

不过,我想为所有妖精做这件事。在像Java这样的传统语言中,我会定义一个类型,例如具有两个属性X和Y的"blood"。

然后,我将

使用地精当前坐标每轮创建一个这种类型的新实例,然后将此类型添加到数组中,我将循环和 然后打印此数组中的所有对象。

我对JS很陌生,因为它是一种函数式语言,所以事情有点不同。我究竟如何定义这样的类型,我可以在游戏的每次迭代中"新"到数组中?

var blood = {
    x: 0,
    y: 0        
};

这是我现在的血液对象

你在Javascript中创建"类"作为函数。 在函数中使用this.x就像创建一个名为 x 的成员变量:

var Blood = function() {
    this.x = 0;
    this.y = 0;
}
var blood = new Blood()
console.log(blood.x);

这些不是像Java这样的OO语言意义上的类或类型,只是通过使用Javascript的作用域规则来模仿它们的一种方式。

到目前为止,这里并没有多大用处 - 一个简单的对象映射也可以工作。 但是,如果您需要在 Blood"类"中提供更多逻辑,例如成员函数等,这种方法可能会很有用。 您可以通过修改对象的原型来创建它们:

Blood.prototype.createSplatter = function() {
    return [this.x-1, this.y+1]; // (idk, however you create a splatter)
};
blood.createSplatter();

(小提琴)

有关Javascript类的更多详细信息,我建议查看CoffeeScript语法(向下滚动到"Classes,Inheritance和Super")。 他们有一些简化的 CS 语法和 JS 翻译中的类的并排示例。