웹/javascript
Javascript 객체 정의 방법, 클로져 IIES 패턴 모듈, 클로져 생성자 패턴 모듈
SourceTree
2021. 11. 18. 20:00
반응형
객체 정의(리터럴) 방법
- 리터럴 : 소스코드에 고정된 값을 말하는 대표적인 용어(var v1 = 5; var v2 = "a"; 에서 5, "a" 값이 리터럴임)
- 아래 예제 에서 num에 할당된 1, func1, func2에 할당된 function() 이 리터럴 이라고 보면 됨
리터럴 객체 정의 예제
var obj = {
num: 1,
func1: function () {
//...
},
func2: function () {
//...
}
};
클로져 IIES 패턴 모듈
- 즉시 실행 함수(IIES) 패턴을 이용한 모듈 정의 방법
- 하나의 모듈만 미리 생성후 바로 사용 가능한 형태
var module = (function() {
// 은닉될 멤버 정의
var privateKey = 0;
function privateMethod() {
return privateKey++;
}
// 공개될 멤버(특권 메소드) 정의
return {
publicKey: privateKey,
publicMethod: function() {
return privateMethod();
}
}
})()
//바로 사용가능
console.log(module.publicMethod()); // 0
console.log(module.publicMethod()); // 1
클로져 생성자 패턴 모듈
- 사용시에 모듈을 생성한 뒤에 사용
- 복수의 모듈이 필요할 때 사용
var module = function() {
var privateKey = 0;
function privateMethod() {
return privateKey++;
}
return {
publicKey: privateKey,
publicMethod: function() {
return privateMethod();
}
}
}
//모듈 할당 후 사용
var obj1 = module();
console.log(obj1.publicMethod()); // 0
console.log(obj1.publicMethod()); // 1
//모듈 할당 후 사용
var obj2 = module();
console.log(obj2.publicMethod()); // 0
반응형