모듈 패턴

    var newScope = (function () {
        구문
    }) ();

함수를 선언하자마자 실행시키는 패턴. IIFE라고도 함.

싱글턴 패턴

    var singleton = (function() {
      var instance;
    var a = 'hello';
  function initiate() {
    return {
      a: a,
      b: function() {
        alert(a);
      }
    };
  }
  return {
    getInstance: function() {
      if (!instance) {
        instance = initiate();
      }
      return instance;
    }
  }
})();
var first = singleton.getInstance();
var second = singleton.getInstance();
console.log(first === second); // true;

단 하나의 객체를 만들 때 이용한다. 비공개 변수를 이용하는게 핵심이다. 모듈 패턴을 이용하여 instance와 같은 비공개 변수를 만들어주고 initate라는 실질적 함수부분을 만들어준다.

사용예로는 게임을 만들때 게임객체를 싱글톤으로 만드는 것이다. 게임은 실행했을때 한 번만 실행되어야 하기 때문.

생성자 패턴

    var Vehicle = (function() {
  function Vehicle(name, speed) {
    this.name = name; this.speed = speed;
  }
  Vehicle.prototype.drive = function () {
    console.log(this.name + ' runs at ' + this.speed);
  };
  return Vehicle;
})();

모듈패턴이 사용되어 Vehicle끼리의 충돌이 피해진다. 변수 Vehicle에 생성자 Vehicle이 덮어짐.