모듈 패턴
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이 덮어짐.
Ghost