자바스크립트

자바스크립트 - 클래스(Class) 만들기

안녕1999 2017. 5. 19. 23:30
자바스크립트에서, this를 사용하여 클래스를 만들었다고 하는 글들이 있다.
물론,
- 배열을 사용하지 않고, 1개만 생성했을때,
- 다수의 클래스에서 동일한 이름의 멤버를 사용하지 않았을때
  (클래스마다 멤버 이름이 모두 다른경우)
인 경우에는 문제가 없다.
전역변수 this(window)에 멤버변수로 추가했으니...

this는 호출자를 나타낸다.
- f();  인경우, f()함수 내부에서 this는 window이다.
- a.f(); 인경우, f()함수 내부에서 this는 a이다.

C++같은 오브젝트 오리엔티드 언어에서는 this가 명확하다.
자바스크립트에서도 명확하다, 그러나 주의할 점이 있다.
멤버함수 내부에서도, "this."을 명시하지 않으면, "전역"으로 취급된다
예)
{
   ...
   function f()
   {
      ...
   }
   return f(); <<--- f()는 전역함수로 취급된다.
}
//클래스(Class) 만들기. 함수에서 var를 사용하여 변수를 만들고, 리턴하면 된다.
//자바에서는 멤버를 추가하기만 하면된다.
function new_MyClass(value)
{
	var a={value:0};//아무거나 하나만 우선 넣는다.
	a.min=0;//멤버변수 추가
	a.max=100;
	a.inc=function(delta)
	{
		this.vaue+=delta;//a가 아니라 this인 것에 주목!!
		if(this.vaue<this.min)
		{
			this.vaue=this.min;
		}
		else if(this.vaue>this.max)
		{
			this.vaue=this.max;
		}
	};
}
var a=new_MyClass(10);
console.log(a.vaue); a.inc(10); console.log(a.vaue);