웹/javascript
Javascript 싱글톤 패턴 모듈, 모듈+네임스페이스 패턴 2개
SourceTree
2021. 11. 18. 20:01
반응형
싱글톤 패턴 모듈
- 하나의 인스턴스만 만들어 사용하는 패턴
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();
//first와 second는 동일한 인스턴스임
console.log(first === second); // true;
모듈+네임스페이스 패턴1
- 하나의 인스턴스를 이름을 지정하여 사용하는 형태
var common = common || {};
common.module = (function() {
var privateKey = 0;
function privateMethod() {
return privateKey++;
}
return {
publicKey: privateKey,
publicMethod: function() {
return privateMethod();
}
}
})();
console.log(common.module.publicMethod()); // 0
console.log(common.module.publicMethod()); // 1
모듈+네임스페이스 패턴2
var common = common || {};
common = (function() {
var publicFunc = {};
var val1 = 10;
publicFunc.setVal1 = function(v) {
val1 = v;
}
publicFunc.getVal1 = function() {
return val1;
}
publicFunc.sum = function(x, y) {
return x + y;
}
return publicFunc;
})();
//사용
common.setVal1(15);
console.log(common.getVal1()); // 15
console.log(common.sum(3, 9)); // 12
반응형