O'Reilly logo

JavaScript for PHP Developers by Stoyan Stefanov

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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 ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required