https://medium.com/@laveshgaurav/understanding-javascript-prototypes-and-prototype-chain-a-deep-dive-4e00498da1fb