2015-05-13 92 views
2

我已經習慣了能夠在Java中定義一個對象,它可以包含其他對象的成員,例如(僞代碼):Coffeescript Object作爲私人會員,是否有可能?

class Zoo{ 
private List<Animal> animals; 
} 
class Animal { 
private double weight; 
private double height; 
private double species; 
} 

然後你可以有一個構造動物園這需要X的動物,並增加了他們對動物收藏並擁有自己的方法。

在coffeescript我似乎無法做到這一點,這是JavaScript的限制嗎?

+1

有沒有JavaScript中的私有屬性以及擴展名CoffeeScript。 – meagar

+0

剛剛發現[this](http://evanhahn.com/private-members-in-coffeescript/)關於私人成員,這裏還挺有用 – welldan97

回答

4

希望我明白你的問題。

在CoffeeScript中,你可以寫

class Animal 
    name: '' 

class Zoo 
    animals: [] #notice you do not specify type! 

    constructor: (animalList) -> 
    @animals = animalList #and animal list is an array of Animal class instances 


zoo = new Zoo([new Animal()]) 
console.log(zoo.animals.length) #should be eq to 1 

如果你想的動物是私有的一樣,因爲它是在Java或C#,我會建議不使用類,但:

Zoo = (animals) -> 

    return { 
    getAnimals: -> animals 
    addToAnimals: (animal) -> animals.push(animal) 
    } 
+2

也可以讓它更加隱含:class Zoo構造函數:(@動物) - >''' – welldan97

+2

@ welldan97是的,我知道,但克雷格哈利似乎不知道一般概念,所以我想盡可能明確地做到這一點 – djaszczurowski