#OOP in JavaScript
OOP Core Principles: Encapsulation - Abstraction - Inheritance - Polymorphism
Benefits of OOP
Encapsulation: Reduce complexity + increase reusability
Abstraction: Reduce complexity + isolate impact of changes
Inheritance: Eliminate redundant code
Polymorphism: Refactor ugly switch/case statements