class Person { constructor(name, age) { this.name = name; this.age = age; } description() { return `A person named ${this.name} who is ${this.age} years old`; } } const AnimalMixin = Base => class extends Base { eats() { return `${this.name} eats like an animal.`; } }; class Employee extends AnimalMixin(Person) { constructor(name, age, salary, jobTitle) { super(name, age); this.salary = salary; this.jobTitle = jobTitle; } description() { return `An employee is also ${super.description()}`; } } let employee = new Employee("Aurel", 30, 15000, "CEO boss"); console.log(employee.eats()); // Aurel eats. console.log(employee.description()); // An employee is also A person named Aurel who is 30 years old