자바스크립트 클래스 사용 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를 해서 재사용하지 않는 클래스임을 명시한다.

+ Recent posts