Coffeescript Object 作为私有成员,有可能吗?

Coffeescript Object as a private member, is it possible?

我习惯于在 Java 中定义一个可以包含其他对象作为成员的对象,例如(伪代码):

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

那么你可以有一个动物园的构造函数,它接收 X 只动物并将它们添加到动物集合中并拥有自己的方法。

在 coffeescript 中我似乎无法做到这一点,这是 javascript 的限制吗?

希望我理解你的问题。

您可以在 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)
  }