const mix = (...rest) => {
let len = rest.length
rest.forEach((fn, i) => {
i < len - 1 && Object.setPrototypeOf(fn.prototype, rest[i+1].prototype)
})
return rest[0]
}
class People {
say() {
console.log("Hello")
}
}
class Animal {
walk() {
console.log("Walk")
}
}
class Singer {
sing() {
console.log("La~")
}
}
class Lucy extends mix(People, Animal, Singer) {
sayHi() {
console.log("I am Lucy")
}
}
const lucy = new Lucy()
lucy.say() // => Hello
lucy.walk() // => walk
lucy.sing() // => La~
lucy.sayHi() // => I am Lucy