<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에 대해 작성해볼까합니다 ㅇㅅㅇ
'Lecture > Javascript-기초' 카테고리의 다른 글
iframe 에서 jQuery의 $(document).ready 가 먹통인경우 (0) | 2014.08.04 |
---|---|
jquery 와 core 간의 submit 차이 (1) | 2014.04.14 |
자바스크립트 콜백구현 (0) | 2013.04.20 |
자바스크립트 function 표현식 (1) | 2013.04.20 |
[실무] 대충 만들면 안되는 트리 구조 (0) | 2013.04.05 |