자바스크립트에서 클래스(엄격히 말해 모조 클래스)를 작성하는 내용에 대한 정리입니다. 일반적으로 다음과 같이 5단계에 걸쳐 클래스를 정의합니다.
- 생성자 함수 정의
- 인스턴스 프로퍼티 정의
- 인스턴스 매서드 정의
- 클래스 매서드 정의
- 클래스 프로퍼티 정의
위의 5단계를 Complex라는 클래스를 자바스크립트 방식으로 정의해 보는 예를 통해 정리하면, 먼저 생성자 함수의 정의는 다음과 같습니다.
function Complex(real, imaginary) { // .. }
클래스의 이름은 첫자를 대문자로 하여 비록 함수이지만 클래스라는 의미를 강조합니다. 다음으로 인스턴스 프로퍼티를 정의하면…
function Complex(real, imaginary) { this.x = real; this.y = imaginary; }
생성자 함수 안에 this라는 키워드를 통해 새로운 인스턴스 변수를 추가합니다. 이제 인스턴스 매서드를 정의하는데, 매서드는 하나의 클래스에 대한 모든 인스턴스가 공유하도록 하기 위해 prototype 객체를 사용하며 예로 다음과 같습니다.
Complex.prototype.magnitude = function() { return Math.sqrt(this.x * this.x + this.y * this.y); }
이제 클래스 매서드를 추가하는 방법입니다. 클래스 매서드는 인스턴스를 대상으로 하는 것이 아니므로 this를 사용할 수 없으며 생성자 함수(자바스크립트에서 클래스) 이름으로 접근할 수 있습니다. 예로 다음과 같습니다.
Complex.sum = function(a, b) { return new Complex(a.x+b.y, a.y+b.y); }
끝으로 클래스 프로퍼티입니다.
Complex.ZERO = new Complex(0, 0);
이 글은 인사이트 출판사의 자바스크립트 완벽가이드를 참고로 하여 정리한 글입니다.