Learning JavaScript Design Pattern
Subtitle: A JavaScript and jQuery Developer's Guide
Publisher: O'Reilly Media
Published: August 27, 2012
Number of pages: 254
ISBN-13: 9781449331818
Table of contents: title: Preface
pagenum: ix; label: 1
title: Introduction
pagenum: 1; label: 2
title: What Is a Pattern?
pagenum: 3; title: We Already Use Patterns Every Day
pagenum: 4; label: 3
title: "Pattern"-ity Testing, Proto-Patterns, and the Rule of Three
pagenum: 7; label: 4
title: The Structure of a Design Pattern
pagenum: 9; label: 5
title: Writing Design Patterns
pagenum: 11; label: 6
title: Anti-Patterns
pagenum: 13; label: 7
title: Categories of Design Patterns
pagenum: 15; title: Creational Design Patterns
pagenum: 15; title: Structural Design Patterns
pagenum: 16; title: Behavioral Design Patterns
pagenum: 16; label: 8
title: Design Pattern Categorization
pagenum: 17; title: A Brief Note on Classes
pagenum: 17; label: 9
title: JavaScript Design Patterns
pagenum: 21; title: The Constructor Pattern
pagenum: 22; title: Object Creation
pagenum: 22; title: Basic Constructors
pagenum: 24; title: Constructors with Prototypes
pagenum: 25; title: The Module Pattern
pagenum: 26; title: Object Literals
pagenum: 26; title: Module Pattern
pagenum: 27; title: Module Pattern Variations
pagenum: 32; title: The Revealing Module Pattern
pagenum: 37; title: Advantages
pagenum: 38; title: Disadvantages
pagenum: 38; title: The Singleton Pattern
pagenum: 39; title: The Observer Pattern
pagenum: 42; title: Differences Between the Observer and Publish/Subscribe Pattern
pagenum: 46; title: Advantages
pagenum: 48; title: Disadvantages
pagenum: 49; title: Publish/Subscribe Implementations
pagenum: 49; title: The Mediator Pattern
pagenum: 59; title: Basic Implementation
pagenum: 60; title: Advanced Implementation
pagenum: 61; title: Example
pagenum: 66; title: Advantages and Disadvantages
pagenum: 68; title: Mediator Versus Observer
pagenum: 68; title: Mediator Versus Facade
pagenum: 68; title: The Prototype Pattern
pagenum: 69; title: The Command Pattern
pagenum: 72; title: The Facade Pattern
pagenum: 74; title: Notes on Abstraction
pagenum: 76; title: The Factory Pattern
pagenum: 77; title: When to Use the Factory Pattern
pagenum: 80; title: When Not to Use the Factory Pattern
pagenum: 80; title: Abstract Factories
pagenum: 80; title: The Mixin Pattern
pagenum: 81; title: Subclassing
pagenum: 81; title: Mixins
pagenum: 83; title: Advantages and Disadvantages
pagenum: 86; title: The Decorator Pattern
pagenum: 86; title: Pseudoclassical Decorators
pagenum: 90; title: Interfaces
pagenum: 90; title: Abstract Decorators
pagenum: 91; title: Decorators with jQuery
pagenum: 94; title: Advantages and Disadvantages
pagenum: 96; title: Flyweight
pagenum: 96; title: Using Flyweights
pagenum: 97; title: Flyweights and Sharing Data
pagenum: 97; title: Implementing Classical Flyweights
pagenum: 98; title: Converting Code to Use the Flyweight Pattern
pagenum: 101; title: A Basic Factory
pagenum: 103; title: Managing the Extrinsic States
pagenum: 104; title: The Flyweight Pattern and the DOM
pagenum: 105; label: 10
title: JavaScript MV* Patterns
pagenum: 109; title: MVC
pagenum: 109; title: Smalltalk-80 MVC
pagenum: 109; title: MVC for JavaScript Developers
pagenum: 110; title: Models
pagenum: 111; title: Views
pagenum: 113; title: Controllers
pagenum: 115; title: Controllers in Another Library (Spine.js) Versus Backbone.js
pagenum: 116; title: What Does MVC Give Us?
pagenum: 118; title: Smalltalk-80 MVC in JavaScript
pagenum: 118; title: Delving Deeper
pagenum: 119; title: Summary
pagenum: 119; title: MVP
pagenum: 119; title: Models, Views, and Presenters
pagenum: 120; title: MVP or MVC?
pagenum: 121; title: MVC, MVP, and Backbone.js
pagenum: 121; title: MVVM
pagenum: 123; title: History
pagenum: 124; title: Model
pagenum: 125; title: View
pagenum: 125; title: ViewModel
pagenum: 128; title: Recap: The View and the ViewModel
pagenum: 130; title: Recap: The ViewModel and the Model
pagenum: 130; title: Pros and Cons
pagenum: 130; title: Advantages
pagenum: 130; title: Disadvantages
pagenum: 130; title: MVVM with Looser Data Bindings
pagenum: 131; title: MVC Versus MVP Versus MVVM
pagenum: 135; title: Backbone.js Versus KnockoutJS
pagenum: 136; label: 11
title: Modern Modular JavaScript Design Patterns
pagenum: 139; title: A Note on Script Loaders
pagenum: 140; title: AMD
pagenum: 140; title: Getting Started with Modules
pagenum: 141; title: AMD Modules with Dojo
pagenum: 144; title: AMD Module Design Patterns (Dojo)
pagenum: 145; title: AMD Modules with jQuery
pagenum: 147; title: AMD Conclusions
pagenum: 149; title: CommonJS
pagenum: 150; title: Getting Started
pagenum: 150; title: Consuming Multiple Dependencies
pagenum: 151; title: Loaders and Frameworks That Support CommonJS
pagenum: 151; title: Is CommonJS Suitable for the Browser?
pagenum: 152; title: Related Reading
pagenum: 152; title: AMD and CommonJS: Competing, but Equally Valid Standards
pagenum: 153; title: Umd: AMD and CommonJS-Compatible Modules for Plug-ins
pagenum: 153; title: ES Harmony
pagenum: 158; title: Modules with Imports and Exports
pagenum: 159; title: Modules Loaded from Remote Sources
pagenum: 160; title: Module Loader API
pagenum: 160; title: CommonJS-like Modules for the Server
pagenum: 160; title: Classes with Constructors, Getters, and Setters
pagenum: 161; title: ES Harmony Conclusions
pagenum: 162; title: Related Reading
pagenum: 162; title: Conclusions
pagenum: 162; label: 12
title: Design Patterns in jQuery
pagenum: 165; title: The Composite Pattern
pagenum: 165; title: The Adapter Pattern
pagenum: 166; title: The Facade Pattern
pagenum: 168; title: The Observer Pattern
pagenum: 170; title: The Iterator Pattern
pagenum: 173; title: Lazy Initialization
pagenum: 174; title: The Proxy Pattern
pagenum: 176; title: The Builder Pattern
pagenum: 177; label: 13
title: jQuery Plug-in Design Patterns
pagenum: 179; title: Patterns
pagenum: 180; title: A Lightweight Start Pattern
pagenum: 181; title: Complete Widget Factory Pattern
pagenum: 183; title: Nested Namespacing Plug-in Pattern
pagenum: 185; title: Custom Events Plug-in Pattern (with the Widget Factory)
pagenum: 187; title: Prototypal Inheritance with the DOM-to-Object Bridge Pattern
pagenum: 189; title: jQuery UI Widget Factory Bridge Pattern
pagenum: 191; title: jQuery Mobile Widgets with the Widget Factory
pagenum: 193; title: RequireJS and the jQuery UI Widget Factory
pagenum: 196; title: Usage
pagenum: 198; title: Globally and Per-Call Overridable Options (Best Options Pattern)
pagenum: 199; title: A Highly Configurable and Mutable Plug-in Pattern
pagenum: 200; title: What Makes a Good Plug-in Beyond Patterns?
pagenum: 203; title: Quality
pagenum: 203; title: Code Style
pagenum: 203; title: Compatibility
pagenum: 203; title: Reliability
pagenum: 203; title: Performance
pagenum: 204; title: Documentation
pagenum: 204; title: Likelihood of Maintenance
pagenum: 204; title: Conclusions
pagenum: 204; title: Namespacing Patterns
pagenum: 205; title: Namespacing Fundamentals
pagenum: 205; title: Single Global Variables
pagenum: 205; title: Prefix Namespacing
pagenum: 206; title: Object Literal Notation
pagenum: 206; title: Nested Namespacing
pagenum: 210; title: Immediately Invoked Function Expressions (IIFE)s
pagenum: 211; title: Namespace Injection
pagenum: 213; title: Advanced Namespacing Patterns
pagenum: 215; title: Automating Nested Namespacing
pagenum: 215; title: Dependency Declaration Pattern
pagenum: 217; title: Deep Object Extension
pagenum: 218; title: Recommendation
pagenum: 221; label: 14
title: Conclusions
pagenum: 223; title: Appendix: References
pagenum: 225; title: Index
pagenum: 229