In this bold new world of rich JavaScript applications running on both the client and the server, the need to structure our code in more object-oriented ways becomes apparent. One potential roadblock many people face is that, instead of the traditional “classical” inheritance model, JavaScript features prototypal inheritance hidden behind a misleading classically-styled syntax. We will compare the two approaches, review some popular design patterns and see why JavaScript’s inheritance model is in many ways more powerful than what you might be used to.