자바스크립트 클래스 사용 3가지 방법
http://www.phpied.com/3-ways-to-define-a-javascript-class/
//A. Using Function
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
// 특징 : 해당 함수로 new를 할때 하나씩 다 할당되는 방법이다
// 장점 : class의 instance를 만들 수 있다.
// 단점 : 생성자가 너무 길어져서 중요한 함수를 놓치게 될 것 같다.
//B. Using Object (JSON type)
var class_B = {
value : 10,
alert_value : function () { alert(class_B.value); }
}
class_B.value = 30;
class_B.alert_value(); // 30
// 특징 : 하나의 객체만 생성된다.
// 장점 : {} 라고 하니까 왠지 클래스 문법 같고, 깔끔하고 맘에 든다
// 단점 : 생성자를 명시하기가 좀 애매하다. init() 으로 코드 컨벤션을 만들기도 한다
//C. using Object 2
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
// 특징 : B와 다르게 표현했을 뿐, 완전 동일하다
//D. Singleton by Function
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
// 특징 : A와 동일하나, 한번에 new를 해서 재사용하지 않는 클래스임을 명시한다.