[javascript] 클래스의 정적 속성과 정적 메서드의 이해
정적 속성과 정적 메서드는 클래스 인스턴스를 생성하지 않고도 호출할 수 있는 클래스에 정의된 속성과 메서드입니다.
인스턴스를 생성하지 않고 바로 호출할 수 있기 때문에 공통으로 사용하는 라이브러리 클래스를 생성해 사용할 때 주로 활용합니다.
정적 속성과 정적 메서드는 앞에 "static" 키워드를 사용해 정의합니다.
"static" 키워드로 정의한 속성과 메서드는 객체 인스턴스를 통하지 않고 호출되는 만큼 객체 constructor 메서드로 생성하는 동적 변수와 메서드에는 접근할 수 없습니다.
정적 속성과 메서드는 인스턴스를 생성하지 않고 접근할 수 있지만, 인스턴스를 통해서는 접근할 수 있습니다.
인스턴스에서 정적 메서드, 속성에 접근하면 에러가 발생합니다.
정적 메서드와 달리 정적 속성은 get;set; 으로 구현해야 하며, static get 키워드로 메서드를 선언해 값을 반환하는 형태로 구현해야 합니다.
마찬가지로 인스턴스에서는 접근이 안되며, 정적 메서드에서는 정적 속성을 접근할 수 있습니다.
class Basket {
constructor(){
this.products = [];
}; //정적 변수 선언
static get HOUR(){
return 4;
} //정적 메서드 선언
static dueTime(){
const deliverymsg = new Date().toISOString().substring(0,10)+' 오후 '+this.HOUR+'시 이전 주문 당일 발송';
return deliverymsg;
};
addBasket(pid, productname, price, num){
this.products.push({pid, productname, price, num});
};
deleteBasket(pid){
const idx = this.products.findIndex(item=>item.pid == pid);
if(idx){
this.products.splice(idx,1);
}
};
}
console.log(Basket.HOUR);
console.log(Basket.dueTime());
const b = new Basket();
console.log(b.dueTime());