大家好我有一个问题。所以我有这个类Sprite,它基本上保存了位置等基本信息。现在它有一个对象属性
this.pos = {x: 0, y: 0}
我还有一些继承自它的东西,这是一个Ball类。现在,每当我调用新的Ball(px,py)时,它会在适当的位置实例化一个球,但是它也会在每个球实例化之前移动到相同的位置。
Ball内的代码是:
this.pos.x = px;
this.pos.y = py;
在我将其更改为:
之前,我不知道这是罪魁祸首this.pos = {x: px, y: py};
在这种情况下它运作得非常好。现在我只是为什么后者起作用,而不是前者,我觉得应该做同样的事情。
答案 0 :(得分:0)
设置它的方式,所有对象都共享相同的位置对象,因此每当您更改该对象时它们都会发生变化。当您使用{}
文字声明一个新对象时,它会创建一个新的独立对象,您可以在不影响其他对象的情况下进行更改。
由于您将对象称为类,因此我假设您使用的语言与Javascript不同。虽然有些库可以创建更类似于类的结构,但我建议您阅读一下Javascript中的继承是如何工作的。您应该在inheritance and the prototype chain和creating objects上找到这些MDN文章特别有用!