Category Archives: Patterns

javascript Patterns

Function Patterns

API Patterns

  • Callback patterns – when you pass function A to function B as a parameter, function A is a callback function
  • Configuration objects – keep control of function arguments and makes it easily configurable
  • Returning functions – one function returns another function or create another function on-demand
  • Currying – used to create new functions dynamically by partially applying a set of arguments

Initialization patterns

Performance patterns

  • Memoization – use function properties to avoid repeated computation
  • Self-defining functions – self-overwrite with new bodies to do less work from the second invocation and after

jQuery Patterns

  • requery – avoid requery by using jQuery chaining
  • append – use string concatenate and set innerHTML
  • data – pattern and antipattern of using data
  • context and find – use find over context
  • detach – take element off the DOM while manipulating them
  • event delegation – event delegation pattern and antipattern
  • selector cache – using selector cache to avoid requery
  • window scroll event – avoid attaching handlers to the window scroll event


Literals and Constructors Patterns

  • Object literal – use the simpler and reliable object literal instead of new Object();
  • Enforcing new – when you forget `new`, `this` inside the constructor will point to the global object
  • Array literal – use array literal notation to avoid potential errors when creating dynamic arrays at runtime
  • Working with JSON – use library from, YUI, jQuery instead of eval for parsing
  • Primitive wrappers – try to use the primitive without wrapper
  • Regular expression literal – try to use the shorter literal notation

Design Patterns


  • Builder – constructs complex objects by separating construction and representation
  • Factory method – creates objects without specifying the exact class to create
  • Singleton – restricts object creation for a class to only one instance


  • Decorator – dynamically adds/overrides behaviour in an existing method of an object
  • Facade – provides a simplified interface to a large body of code
  • Proxy – provides a placeholder for another object to control access, reduce cost, and reduce complexity


  • Chain of responsibility – delegates commands to a chain of processing objects
  • Command – creates objects which encapsulate actions and parameters
  • Iterator – implements a specialized language
  • Mediator – allows loose coupling between classes by being the only class that has detailed knowledge of their methods
  • Observer – is a publish/subscribe pattern which allows a number of observer objects to see an event
  • Strategy – allows one of a family of algorithms to be selected on-the-fly at runtime

General Patterns