User Tools

Site Tools


java-script:multiple-inheritance

This is an old revision of the document!


Java Script Multiple Inheritance

JavaScript does not support multiple inheritance directly, which means a class can't extend more than one class. The extends keyword can only be followed by a single class.
To incorporate functionality from multiple sources, JavaScript supports “mixins” as a way to accomplish this.

Java Script Mixins

A mixin is a class whose methods are intended to be added to (or “mixed in” to) other classes.

Example:

class Person {
    constructor(name, age) {
        this.name = name;
        this.age = age;
    }
 
    description() {
        return `A person named ${this.name} who is ${this.age} years old`;
    }
}
 
class Animal {
    eats() {
        return `${this.name} eats.`;
    }
}
 
const AnimalMixin = Base => class extends Base {
    eats() {
        return `${this.name} eats.`;
    }
};
 
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
java-script/multiple-inheritance.1690387122.txt.gz · Last modified: 2023/07/26 18:58 by odefta