2013-10-28 42 views
0

嗨,大家好,我有一個問題。所以我有這個類雪碧基本上保持一樣的位置等基本信息。現在它有一個對象的屬性爲Javascript中的對象的繼承屬性設置值

this.pos = {x: 0, y: 0} 

我也然後有東西從它繼承,這是一個Ball類。現在,每次我調用新的Ball(px,py)時,它會在適當的位置實例化一個球,但它也會將實例化之前的每個球移動到相同的位置。

裏面的代碼球是:

this.pos.x = px; 
this.pos.y = py; 

我不知道這是罪犯,直到我把它改爲:

this.pos = {x: px, y: py}; 

在這種情況下,它的工作奇妙。現在我只是困惑,爲什麼後者工作,而不是前者,對我來說,它應該做同樣的事情。

+1

我們可以看到你如何定義你的對象嗎? –

回答

0

你設置它的方式,你的所有對象都共享相同的位置對象,所以它隨着他們會改變每當你改變該對象。當您使用{}文字聲明新對象時,它會創建一個新的單獨對象,您可以在不影響其他對象的情況下更改這個對象。

既然你把你的對象稱爲類,我假設你來自一種語言,它的功能與Javascript不同。儘管有些庫會創建更類似於類的結構,但我建議您閱讀一下關於Javascript中繼承是如何工作的。您應該在inheritance and the prototype chaincreating objects上找到這些MDN文章特別有用!