A JavaScript design pattern for creating object oriented code with private methods, inheritance, and magic