[JS] 클래스

GDORI·2024년 8월 14일
0

JavaScript

목록 보기
17/28

클래스란?

ES6에 도입된 클래스란 객체 지향 프로그래밍에서 특정 객체를 생성하기 위해 미리 변수와 메서드를 정의하여 찍어낼 수 있게끔 해주는 일종의 틀, 설계도라고 볼 수 있다.

기본 틀

class 클래스명{
 constructor(인자1,인자2,...)
  this.인자1 = 인자1;
  this.인자2 = 인자2;
}

메서드명() {
	실행 코드 ; 
} // 메서드 또한 클래스에 포함시킬 수 있다.

const 객체명 = new 클래스명(인자1,인자2);

클래스는 class 키워드를 사용하여 생성할 수 있다.
기본적으로 constructor 라는 생성자 함수로 객체를 초기화 한다.
내부에 메서드를 정의할 수 있다.

생성된 클래스로 객체를 생성할 때에는 new 키워드를 사용한다.

underscore(_)

언더 스코어는 Private 속성을 띄우고 싶을 때 사용한다.
클래스에는 Getter와 Setter가 있는데 this로 인해 무한루프에 빠지게 된다.
인스턴스 내에서만 해당 변수를 사용하기 위해 사용한다.

Getter & Setter

class TV {
    constructor(name, price) {
        this._name = name;
        this._price = price;
    }

    get name() {
        return this._name;
    }
    get price() {
        return this._price;
    }
    set name(value) {
        if (typeof value !== 'string') {
            throw new Error("문자열 형식이 아님");
        } else {
            this._name = value;
        }
    }
    set price(value) {
        if (typeof value !== 'number') {
            throw new Error("숫자가 아님");
        } else {
            this._price = value;
        }
    }

}


const smart1 = new TV("smartTV", 250);
smart1.price = 300;
console.log(smart1); // TV { _name: "smartTV", _price: 250 }
smart1.price = "hehe"; // throw new Error("숫자가 아님"); 

getter는 원하는 값을 얻기 위할 때 호출되어 사용되고, setter는 값을 변경할 때 검수용으로 사용된다.

상속

class TV {
    constructor(name, price) {
        this._name = name;
        this._price = price;
    }
}

class NewTV extends TV{
    constructor(name,price,inch){
        super(name,price);
        this._inch = inch;
    }
}



const tv1 = new NewTV("goodTV",150,50); 
console.log(tv1) // NewTV { _name: 'goodTV', _price: 150, _inch: 50 }

상속은 다른 클래스의 기능을 물려받을 수 있다.
상속해주는 class를 super class 라고 부르며,
super 키워드를 사용하여 받아올 수 있다.
메서드를 오버라이딩하여 사용할 수 있다.

static 메소드

class Calc {
  static add(a, b) {
    return a+b;
  }
  static sub(a, b) {
    return a-b;
  }
}

console.log(Calc.add(10, 10)); // 20
console.log(Calc.sub(20, 10)); // 10

static은 인스턴스에서 호출할 수 없으며, 클래스 이름으로 호출이 가능하다.
복제할 필요가 없는 데이터를 만들 때 사용된다.

profile
하루 최소 1시간이라도 공부하자..

0개의 댓글