본문 바로가기
Lecture/Javascript-기초

자바스크립트 클래스

by 알 수 없는 사용자 2013. 4. 21.
반응형


<script>

var myClass = function(){

//private field

var age = 26;

var name = '재욱';


//public field

this.phone = '010-1234-9999';

this.email = 'abcdefg@naver.com';


//private method

var getAge = function(){

return age;

}


//public method

this.getName = function(){

//return getAge(); //private method 호출가능

//return this.email; //public field 참조가능

return name; //private field 참조가능

}

};


var o = new myClass();

console.log(o.name); //undefined

console.log(o.phone); //010-4404-6492

console.log(o.getName()); //재욱

console.log(o.getAge()); //Uncaught TypeError: Object [object Object] has no method 'getAge' 

</script>


위 방법은 함수 표현식을 통한 클래스 형상화를 한것입니다. 함수 선언식으로 해도 결과는 동일합니다.

■ public

this 키워드를 통해 생성하는 필드와 메소드는 모두 public 으로 사용하고, 접근도 가능합니다.


■ private

var 선언문을 통해 작성된 필드와 메소드는 모두 private으로 사용하고, 외부에서 접근이 불가능합니다.


■ 생성자

자바스크립트의 생성자는 function 그 자체를 의미합니다. new 키워드를 붙여 오브젝트를 인스턴스화 시킬때 constructor 필드는 함수 자체를 가르키고있기때문에 특별한 생성자를 구축할수가 없습니다.

또한 해당 필드를 수정한다한들 new 연산시 다시금 자기자신을 돌아보게 하기때문에 생성자에 대한 처리를 둘 수 없습니다.

일반적인 경우는 이런식으로 처리합니다.

var test = function(param1 , param2){

var age = param1;

var name = param2;

this.getInfo = function(){

return [age  , name];

}

}


var t = new test(26 , "ㅇㅅㅇ");

console.log(t.getInfo());


함수파라미터를 넘긴다는 의미로 위와같이 작성할 수 있습니다.

또다른 방법으로는 즉시수행함수를 통한 좀더 그럴듯한 셋팅방법이 있습니다만, 쓸때없이 메모리를 낭비하기때문에 위와같은 방법을 권합니다.


■ 소멸자

자바스크립트는 소멸자가 없습니다. ㅋㅋ 소멸자는 어떻게 구현해보려해도 되질않습니다. 



이정도로 클래스의 기본적인 부분을 마치며 다음에는 좀더 심오한 prototype에 대해 작성해볼까합니다 ㅇㅅㅇ