调用其他类中的方法时调用方法

时间:2017-02-07 17:08:17

标签: javascript jquery class oop events

在给定的两个班级中:

class Person {
  constructor(name) { 
    this.name = name; 
  }

  feedCats() {
    console.log(this.name + ' fed the cats');
  }
}

class Cat {
  constructor(name) {
    this.name = name;
  }

  meow() {
    console.log(this.name + ' says \'meow\'');
  }
}

每当meow()的任何实例调用Cat方法时,我都希望调用每个Person实例中的方法feedCats()。我该怎么做?

我假设可能需要处理事件,但是在使用event方法时需要JavaScript addEventListener()类型,而我找不到合适的方法。我需要最快的JavaScript或jQuery解决方案。

1 个答案:

答案 0 :(得分:1)

我相信解决这个问题的途径非常简单。

feedCats移至名为CatFeeder的新类,并在调用feed之前添加要喂的猫:

class CatFeeder extends Person {
    constructor(...args) {
         super(...args);

         this.cats = [];
    }

    addCat(name) {
         this.cats.push(new Cat(name));
    }

    feed() {
         this.cats.forEach(cat => cat.meow());

         console.log(`${this.name} fed the cats and they said meow!`);
    }
}


var catFeeder = new CatFeeder("Matías");
catFeeder.addCat("Inno");
catFeeder.addCat("Darky");

catFeeder.feed();

在一天结束时,Person本身不是猫咪,而是CatFeeder(谁是一个人,但不是任何人) 。对我来说,这比考虑任何人都有养猫的特性和行为更自然。