How to implement object-oriented-programming (OOP) in JavaScript: Inheritance, constructors, ES6 classes and prototypes.