1. Function 이용
특징 : 해당 함수로 new를 할때 하나씩 다 할당되는 방법이다
장점 : class의 instance를 만들 수 있다.
단점 : 생성자가 너무 길어져서 중요한 함수를 놓치게 될 것 같다.
function class_A (arg) {
var _base = this;
_base.value = arg;
_base.alert_value = function () {alert(_base.value);}
}
var class_A_1 = new class_A(10);
var class_A_2 = new class_A(10);
class_A_2.value = 20;
class_A_1.alert_value(); // 10
class_A_2.alert_value(); // 20
2. JSON 타입의 Object 이용
특징 : 하나의 객체만 생성된다.
장점 : {} 라고 하니까 왠지 클래스 문법 같고, 깔끔하고 맘에 든다
단점 : 생성자를 명시하기가 좀 애매하다. init() 으로 코드 컨벤션을 만들기도 한다
var class_B = {
value : 10,
alert_value : function () { alert(class_B.value); }
}
class_B.value = 30;
class_B.alert_value(); // 30
3. Object 이용
특징 : B와 다르게 표현했을 뿐, 완전 동일하다
var class_C = new Object();
class_C['value'] = 10;
class_C['alert_value'] = function () { alert(class_C.value); };
class_C.value = 40;
class_C.alert_value(); // 40
4. 싱글톤 패턴으로 Function 이용
특징 : 1번과 동일하나, 한번에 new를 해서 재사용하지 않는 클래스임을 명시한다
var class_D = new function() {
var _base = this;
_base.value = 10;
_base.alert_value = function () {alert(_base.value);}
}
class_D.value = 50;
class_D.alert_value(); // 50
5. 또다른 방법
var my_namespace = {};
my_namespace.my_class = function(){ // construction
// member variable
var _private_variable = "default";
// member function (protected)
function private_function (){
_private_variable = 'new value ';
}
// API public function
return {
getNum : function (){
alert(_cnt);
alert(_prvia);
},
incNum : function (){
_cnt++;
private_function('nono');
}
}
}
출처 : http://doodoori2.blog.poolc.org/183
위 출처에 있는글 가져와서 약간의 편집만 함