Object-Oriented JavaScript — A Deep Dive into ES6 Classes
“Often we need to represent an idea or concept in our programs—maybe a car engine, a computer file, a router, or a temperature reading. Representing these concepts directly in code comes in two parts: data to represent the state and functions to represent the behavior.”