2015-05-13 55 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