Chapter 7. JavaScript Patterns

Now that you know about JavaScript’s syntax and built-in APIs, as well as the special treatment of functions and the existence of prototypes, let’s take a look at some common JavaScript patterns. These are not necessarily the design patterns from the Gang of Four’s book (although there are a few at the end, for good measure), but mostly patterns specific to organizing your code when creating a larger application.

For example, JavaScript doesn’t have namespaces, modules, or private properties, but these are all features that are easy to replicate.

You’ll notice that most of the time, the solutions to a lot of problems boil down to interesting uses of functions, which is why understanding functions, closures, and scope is critical to mastering JavaScript.

Private Properties

In ES5, you can use property descriptors to limit access to certain properties, but you can’t do anything like this in ES3. So how do you create private properties that no one is allowed to touch?

The solution is to use a closure and not expose the variables you want to keep private. These will not be exactly private properties of an object, but they will be private nevertheless.

An example of using a closure for privacy was discussed in Immediate Functions. But the topic is worth reviewing and expanding. A common pattern of using a closure to define an object is like this:

var my = (function () {
  return {
    hi: 1,
    bye: 2

my.hi; // 1

At first sight, the end result is not different ...

Get JavaScript for PHP Developers now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.