JSFiddle - React, Tailwind, and code Playground

JavaScript

// Create a mixin
const PlayMixin = superclass => class extends superclass {
  
  constructor(args) {
  	let { favouriteGame } = args        
  	super(args);
  	this.favouriteGame=favouriteGame;
  }
  
  play() {
    console.log(`${this.name} is playing ${this.favouriteGame}`);
  }

};


const FoodMixin = superclass => class extends superclass {
  
  constructor(args) {
  	let { genericFood } = args        
  	super(args);
  	this.genericFood=genericFood;
  }
  
  eat() {
    console.log(`${this.name} is eating ${this.genericFood}`);
  }

  poop() {
    console.log("Going to 💩");
  }
};


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

class Dog extends PlayMixin(FoodMixin(Animal)) {
  constructor(...args) {  	
    super(...args)
  }

  bark() {
    console.log("Woff woff!")
  }

  haveLunch() {
    this.eat();
    this.poop();
  }
}

const jack = new Dog({name:"Jack", genericFood:"lobster", favouriteGame:"chess"});
jack.haveLunch();
jack.play();