What-are-the-pros-and-cons-of-using-JavaScript-ES5versus-ES6 I’m going to compare only ES5 classes vs ES6 classes, as that is one of the major differences that has drawbacks. Other differences are language features that improve over ES5, and in my opinion, only ES6+ classes have real downsides. Pros ES5 classes (constructor pattern with prototypes): You have a lot of browser support. Classes and OO inheritance. (Here’s a list of 41 libraries for doing OOP in ES5, and I didn’t even bother to continue my search on NPM after page 6 of searching for “class inheritance”: #587 · w3c/web components) You can easily make “interfaces”, “multiple inheritances”, “protected and private members”, and other inheritance features in ES5 because it is flexible. See the first 11 libraries that I linked, which have interesting features. You can use `this` before calling a super constructor in an ES5 class. You can dynamically modify class prototypes to achieve certain things. For example, there are valid tricks whereby you temporarily remove a prototype, do something, and then add it back. You can inject prototypes in between prototypes. You can take POJOs (plain ol’ JavaScript Objects) as class specs and generate classes from them easily. ES6 classes (class syntax, which isn’t purely sugar): Classes and OO inheritance.