在给定的两个班级中:
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解决方案。
答案 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
(谁是一个人,但不是任何人) 。对我来说,这比考虑任何人都有养猫的特性和行为更自然。