JavaScript inheritance, why are you so awful?