2011-08-07 36 views
0

名單我有這樣的代碼:迭代通過物體在CoffeeScript中

class Canine 
    constructor: (@breed) -> 
    whichBreed: -> 
    alert @breed 

poodle = new Canine "poodle" 
labrador = new Canine "labrador" 

iterate = -> 
    poodle.whichBreed() 
    labrador.whichBreed() 

我想是這樣的:

listOfDogs = [poodle, labrador] 
for d in listOfDogs 
    d.whichBreed() 

,但它不工作的方式。 是否可以遍歷具有相同結構的對象列表?

+1

我想你的代碼和它的作品... – mak

+0

當我打電話'poodle.whichBreed()'和'labrador.whichBreed()'的方式如上所示,我的代碼做的事情與當我通過循環中的d.whichBreed()完成時有所不同(在後一種情況下,實際代碼中的函數不會被調用 - 從單個調用變爲循環唯一的區別)。考慮一下,所有東西都是JS中的一個對象,所以當然你可以迭代一系列coffeescript對象。當我問這個問題的時候已經是凌晨3點了,對不起。如果我無法弄清楚什麼是錯的,我會問一個新的,更好的。 – MarkovCh1

+0

@Syzygy如果你可以複製這個,我會很驚訝。 'd.whichBreed()for [在[poodle,labrador]''應該完全等價於'poodle.whichBreed(); labrador.whichBreed()'。 –

回答

2

你的意思是:

class Canine 
    constructor: (@breed) -> 
    whichBreed: -> 
    alert @breed 

poodle = new Canine "poodle" 
labrador = new Canine "labrador" 

iterate = -> 
    poodle.whichBreed() 
    labrador.whichBreed() 

listOfDogs = [poodle, labrador] 
for d in listOfDogs 
    d.whichBreed() 

(改變new Animalnew Canine)?因爲工作正常......我得到的預期輸出

poodle 
labrador 
+0

我的代碼還有其他問題,如果感興趣,請參閱上面的註釋以獲取更多信息。謝謝! – MarkovCh1