클래스 프로퍼티와 메서드

클래스 프로퍼티

자바스크립트에서 클래스 프로퍼티는 클래스의 각 인스턴스와 연관된 것이 아닌 클래스 자체와 연관된 프로퍼티다. 클래스의 인스턴스가 얼마나 생성됐느냐와 관계없이 각 클래스 프로퍼티는 각각 하나씩만 존재한다.

자바스크립트에서 클래스 프로퍼티를 정의하려면 생성자 함수 자체의 프로퍼티로 정의하기만 하면 된다. 이는 자바스크립트 함수 역시 객체이기 때문이다. 다음 예제를 보자.

function Circle(r){
    this.radius = r;
}

// 클래스 프로퍼티를 정의
Circle.PI = 3.14159265;

Circle.prototype.area = function(){
    return Circle.PI * this.radius * this.radius;
}   

c1 = new Circle(10);

console.log(c1.area()); // 314.159265

클래스 메서드

클래스 메서드는 클래스의 인스턴스가 아닌 클래스와 연관된 메서드다.

자바스크립트에서 클래스 메서드를 정의하려면 적절한 함수를 생성자의 프로퍼티로 만들기만 하면 된다.

클래스 메서드는 생성자 함수를 통해 호출되기 때문에 this 키워드는 클래스의 특정 인스턴스를 참조하지 않는다. 그래서 보통 클래스 메서드에서는 this를 전혀 사용하지 않는다.

클래스 메서드의 예는 다음과 같다.

function Point(x,y){
    this.x = x;
    this.y = y;
}

// 클래스 메서드를 정의
Point.getHigherPoint = function(a,b){
    if (a.x > b.x) return a;
    else return b;
}   

point1 = new Point(5,5);
point2 = new Point(8,8);

console.log(Point.getHigherPoint(point1, point2).y);    // 8

관련 수업

← 이전다음 →