https://towardsdev.com/the-software-engineers-interview-handbook-part-6-javascript-object-oriented-programming-i-ad7c4c3cb2ea