However, the latest ES6 class feature is only a half-assed implementation of class-based OOP. It’s just syntactic sugar over object prototypes. It still doesn’t support private state (member variables) in the way we expect. Member variables must be “faked” through a variety of workarounds such as programming convention, capturing normal variables with closures, and employing WeakMaps. ES6 is not a proper class-based OOP language like Smalltalk, C++, C# and Java.
Leave object prototypes where they belong: as a means of experimenting with ideas and prototyping applications. But when you get down to the brass tacks of engineering, you must use higher level abstractions that help you organize your code better…such as classes.