This document discusses JavaScript design patterns. It begins with background on design patterns and their prerequisites. It then covers different types of patterns like creational, structural and behavioral. Specific patterns like constructor, singleton, module, observer, mediator, prototype and others are explained. The document also discusses MV* patterns, namespacing patterns, lazy initialization and terms like loose coupling. It concludes with an exercise asking the reader to identify pros and cons of patterns and patterns used in jQuery.