其实是Manager身兼多职引起的,在Animals中不要引用Manager。应该引入event机制,当Anaimal的attack动作发生时,触发'attack' 事件,而在Manager里监听attack事件,调用自已的change函数。
Animal.ts
class Animal implements EventEmiter
{
public sex: number = 0;
public Create(): void
{}
public Attack(): void
{
this.emit('attack');
}
}
Manager.ts
[code]public CreateCat(): void
{
let self = this;
let cat = new Cat();
cat.Create();
cat.on('attack', function () {
self.Change();
});
this.animals.push(cat);
}[/code]