设置Javascript中作为对象的继承属性的值

时间:2013-10-28 19:15:52

标签: javascript html prototype

大家好我有一个问题。所以我有这个类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};

在这种情况下它运作得非常好。现在我只是为什么后者起作用,而不是前者,我觉得应该做同样的事情。

1 个答案:

答案 0 :(得分:0)

设置它的方式,所有对象都共享相同的位置对象,因此每当您更改该对象时它们都会发生变化。当您使用{}文字声明一个新对象时,它会创建一个新的独立对象,您可以在不影响其他对象的情况下进行更改。

由于您将对象称为类,因此我假设您使用的语言与Javascript不同。虽然有些库可以创建更类似于类的结构,但我建议您阅读一下Javascript中的继承是如何工作的。您应该在inheritance and the prototype chaincreating objects上找到这些MDN文章特别有用!