JavaScript's inheritance works differently from inheritance in other languages, which can be very confusing. The ES6 class operator is syntactic sugar that attempts to alleviate the issues with using prototypical inheritance present in ES5. Our recommendation is still to avoid using inheritance or at least deep inheritance hierarchies. Try solving the same problems through delegation, aggregation, or functional composition instead.