Never.
ES6 "Classes" don't give you anything and their implementation is also very weak. You have to put super(), you can't define properties and you still have to use Object.prototype when you need to do something more specific.
There are no "classes" in ES5 either. Just use plain objects.
Object.create(),Object.assign()Keep your code simple and write your code same way and not in different ways. I am not using classes and even prototypes anymore. Just plain objects which operates on data or DOM, that's the simplest approach I found. Example:
const MyString = {
concat(str1, str2) {
return str1 + str2;
}
}
const MyButton = {
getAllButtons() {
return document.getElementsByTagName('button') || false;
}
init(button) {
button.addEventListener('click', () => {
console.log('My Button clicked');
}
}
}