Skip to main content

Mixins

class Animal {
constructor(name) {
this.name = name
}

speak = () => console.log(this.name, 'speaks...');
}

const Flying = (Base) => class extends Base {
fly = () => console.log(this.name, 'Flying...');
}

const Swimming = (Base) => class extends Base {
swim = () => console.log(this.name, 'Swimming...');
}

const animal = new (Swimming(Flying(Animal)))("duck");

animal.speak()
animal.fly()
animal.swim()

/*
duck speaks...
duck Flying...
duck Swimming...
*/