Jul 28, 2017 · 1 min read
I think this article is missing a more detailed section on class mixins:
const Barking = base => class extends base {
bark () {
console.log('woof!')
}
}const Sitting = base => class extends base {
sit () {
console.log(`${this.name} sits ${this.attribute}ly`)
}
}const Meowing = base => class extends base {
meow () {
console.log('meow!')
}
}class Animal {
constructor (name) {
this.name = name
}
}class Dog extends Barking(Sitting(Animal)) {
constructor (name) {
super(name)
this.attribute = 'loyal'
}
}class Cat extends Meowing(Sitting(Animal)) {
constructor (name) {
super(name)
this.attribute = 'luxurious'
}
}const fido = new Dog('Fido')
fido.bark() // woof!
fido.sit() // Fido sits loyallyconst mittens = new Cat('Mittens')
mittens.meow() // meow!
mittens.sit() // Mittens sits luxuriously
