자바스크립트 - 클래스(Class) 만들기
자바스크립트 / 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);
'자바스크립트' 카테고리의 다른 글
자바스크립트-멤버함수내에서 this를 항상 사용해야하는가?(생략가능한가?) (0) | 2017.06.07 |
---|---|
sprintf (0) | 2017.05.27 |
바이트 배열 Uint8Array (0) | 2017.04.24 |
자바스크립트 - 스크립트 인클루드(include) 후, 갑자기 안되요 (0) | 2017.04.01 |
자바스크립트 - 문자열 배열 (0) | 2017.03.11 |