Study/JavaScript

정적 메서드와 정적 프로퍼티

더 멋진 세상을 꿈꾸는 개발자 2020. 6. 8. 11:03

 

 

"prototype"이 아닌 클래스 함수 자체에 메서드를 설정할 수도 있다.

이런 메서드를 정적(static)메서드라고 부른다.

 

정적 메서드는 아래와 같이 클래스 안에서 static 키워드를 붙여 만들 수 있다.

 

class User {
	static staticMethod() {
    	alert(this === User);
    }
}
User.staticMethod();   //true

 

정적 메서드는 메서드를 프로퍼티 형태로 직접 할당하는 것과 동일한 일을 한다.

 

 

class User {  }

User.staticMethod = function(){
	alert(this === User);
};

User.staticMethod();   //true

 

User.staticMethod()가 호출될 때 this의 값은 클래스 생성자인 User자체가 된다. (점 앞 객체)

 

정적 메서드는 어떤 특정한 객체가 아닌 클래스에 속한 함수를 구현하고자 할 때 주로 사용된다. 

 

객체 Article이 여러 개 있고 이들을 비교해 줄 함수가 필요하다고 가정해보자.

가장 먼저 아래와 같이 Article.compare를 추가하는 방법이 떠오를 것이다.