caetus, а что, если типов уток будет 15? Геморой какой-то....
ES6 на вас не хватает =)
class Duck {
constructor(name) {
this.name = name;
}
quack() {
console.log(`${ this.name }: quaack!`);
}
fly() {
console.log(`${ this.name }: looks at you from height!`);
}
swim() {
console.log(`${ this.name }: I'm swimming like a fish!`);
}
}
const duck = new Duck('Foo');
duck.quack(); // quaack!
duck.fly(); // looks at you from height!
duck.swim(); // I'm swimming like a fish!
class WoodenDuck extends Duck {
constructor(name) {
super(name);
}
quack() {
console.log(`${ this.name }: I wanna quack, but I can't...`);
}
fly() {
console.log(`${ this.name }: throw me to see how I fly!`);
}
}
const wd = new WoodenDuck('Bar');
wd.swim(); // Bar: I'm swimming like a fish!
wd.fly(); // Bar: throw me to see how I fly!
Правда, так делать нелогично, ведь зачем деревянной утке знать о том, что она не умеет?=)